ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCBiNWQ3MmYzLi4xZmMzNjk4IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsMTcgQEAKIENoYW5nZXMgZm9yIFUtQm9vdCAxLjEuMzoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorKiBQYXRjaGVzIGJ5IFJvYmVydCBXaGFsZXksIDI5IE5vdiAyMDA0OgorICAtIHVwZGF0ZSB0aGUgcHhhLXJlZ3MuaCBmaWxlIGZvciBQWEEyN3ggY2hpcHMKKyAgLSBhZGQgUFhBMjd4IGJhc2VkIEFEU1ZJWCBib2FyZAorICAtIGFkZCBzdXBwb3J0IGZvciBNTUMgb24gUFhBMjd4IHByb2Nlc3NvcnMKKworKiBQYXRjaCBieSBBbmRyZXcgRS4gTWlsZXNraSwgMjggTm92IDIwMDQ6CisgIEZpeCBQUEM0eHggU1BEIFNEUkFNIGRldGVjdGlvbiBidWcKKworKiBQYXRjaCBieSBIaXJvc2hpIEl0bywgMjYgTm92IDIwMDQ6CisgIEZpeCBsb2dpYyBvZiAidGVzdCAteiIgYW5kICJ0ZXN0IC1uIiBjb21tYW5kcworCiAqIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAwNSBBcHIgMjAwNToKICAgQWRkIHN1cHBvcnQgZm9yIFZvaWNlQmx1ZSBib2FyZC4KIApkaWZmIC0tZ2l0IGEvQ1JFRElUUyBiL0NSRURJVFMKaW5kZXggMjUyYTRiMi4uY2VjNzRhOSAxMDA2NDQKLS0tIGEvQ1JFRElUUworKysgYi9DUkVESVRTCkBAIC00MDIsNiArNDAyLDEwIEBACiBFOiBjaHJpc3RpYW4udmVqbGJvQHRlbGxhYnMuY29tCiBEOiBGQURTODYwVCBldGhlcm5ldCBzdXBwb3J0CiAKK046IFJvYmVydCBXaGFsZXkKK0U6IHJ3aGFsZXlAYXBwbGllZGRhdGEubmV0CitEOiBQb3J0IHRvIEFSTSBQWEEyN3ggYWRzdml4IFNCQworCiBOOiBNYXJ0aW4gV2luaXN0b2VyZmVyCiBFOiBtYXJ0aW53aW5pc3RvZXJmZXJAZ214LmNoCiBEOiBQb3J0IHRvIE1QQzU1NS81NTYgbWljcm9jb250cm9sbGVycyBhbmQgc3VwcG9ydCBmb3IgY21pIGJvYXJkCmRpZmYgLS1naXQgYS9NQUtFQUxMIGIvTUFLRUFMTAppbmRleCA0MjZjNmE2Li42OWQ3NzYwIDEwMDY0NAotLS0gYS9NQUtFQUxMCisrKyBiL01BS0VBTEwKQEAgLTE3MCw5ICsxNzAsOSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBMSVNUX3B4YT0iCVwKLQljZXJmMjUwCQljcmFkbGUJCWNzYjIyNgkJaW5ub2tvbQkJXAotCWx1YmJvY2sJCXdlcGVwMjUwCXhhZW5pYXgJCXhtMjUwCQlcCi0JeHNlbmdpbmUJCQkJCQkJXAorCWFkc3ZpeAkJY2VyZjI1MAkJY3JhZGxlCQljc2IyMjYJCVwKKwlpbm5va29tCQlsdWJib2NrCQl3ZXBlcDI1MAl4YWVuaWF4CQlcCisJeG0yNTAJCXhzZW5naW5lCQkJCQkJCVwKICIKIAogTElTVF9peHA9Iml4ZHA0MjUiCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGY5M2M4NmIuLjYzYTJjMzEgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xNDMyLDYgKzE0MzIsOSBAQAogIyMgWFNjYWxlIFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAorYWRzdml4X2NvbmZpZwk6CXVuY29uZmlnCisJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gcHhhIGFkc3ZpeAorCiBjZXJmMjUwX2NvbmZpZyA6CXVuY29uZmlnCiAJQC4vbWtjb25maWcgJChAOl9jb25maWc9KSBhcm0gcHhhIGNlcmYyNTAKIApkaWZmIC0tZ2l0IGEvYm9hcmQvYWRzdml4L01ha2VmaWxlIGIvYm9hcmQvYWRzdml4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNTE0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hZHN2aXgvTWFrZWZpbGUKQEAgLTAsMCArMSw0OCBAQAorCisjCisjIChDKSBDb3B5cmlnaHQgMjAwMAorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gbGliJChCT0FSRCkuYQorCitPQkpTCTo9IGFkc3ZpeC5vIHBjbWNpYS5vCitTT0JKUwk6PSBtZW1zZXR1cC5vIHB4YXZvbHRhZ2UubworCiskKExJQik6CSQoT0JKUykgJChTT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKSAkKFNPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENQUEZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworLWluY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvYWRzdml4LmMgYi9ib2FyZC9hZHN2aXgvYWRzdml4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3NzBlOQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2Fkc3ZpeC9hZHN2aXguYwpAQCAtMCwwICsxLDc3IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA0CisgKiBSb2JlcnQgV2hhbGV5LCBBcHBsaWVkIERhdGEgU3lzdGVtcywgSW5jLiByd2hhbGV5QGFwcGxpZWRkYXRhLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogS3lsZSBIYXJyaXMsIE5leHVzIFRlY2hub2xvZ2llcywgSW5jLiBraGFycmlzQG5leHVzLXRlY2gubmV0CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAqIE1pc2NlbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGlzYXRpb25zCisgKi8KKworaW50IGJvYXJkX2luaXQgKHZvaWQpCit7CisJREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisKKwkvKiBtZW1vcnkgYW5kIGNwdS1zcGVlZCBhcmUgc2V0dXAgYmVmb3JlIHJlbG9jYXRpb24gKi8KKwkvKiBzbyB3ZSBkbyBfbm90aGluZ18gaGVyZSAqLworCisJLyogYXJjaCBudW1iZXIgb2YgQURTVklYLUJvYXJkICovCisJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IDYyMDsKKworCS8qIGFkcmVzcyBvZiBib290IHBhcmFtZXRlcnMgKi8KKwlnZC0+YmQtPmJpX2Jvb3RfcGFyYW1zID0gMHhhMDAwMDAzYzsKKworCXJldHVybiAwOworfQorCitpbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpCit7CisJc2V0ZW52KCJzdGRvdXQiLCAic2VyaWFsIik7CisJc2V0ZW52KCJzdGRlcnIiLCAic2VyaWFsIik7CisJcmV0dXJuIDA7Cit9CisKKworaW50IGRyYW1faW5pdCAodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKKwlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOworCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKKwlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOworCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKKwlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvY29uZmlnLm1rIGIvYm9hcmQvYWRzdml4L2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGJlNGViCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRzdml4L2NvbmZpZy5tawpAQCAtMCwwICsxIEBACitURVhUX0JBU0UgPSAweGExNzAwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvbWVtc2V0dXAuUyBiL2JvYXJkL2Fkc3ZpeC9tZW1zZXR1cC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNmFiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hZHN2aXgvbWVtc2V0dXAuUwpAQCAtMCwwICsxLDQ2OCBAQAorLyoKKyAqIFRoaXMgd2FzIG9yaWdpbmFsbHkgZnJvbSB0aGUgTHViYm9jayB1LWJvb3QgcG9ydC4KKyAqCisgKiBNb3N0IG9mIHRoaXMgdGFrZW4gZnJvbSBSZWRib290IGhhbF9wbGF0Zm9ybV9zZXR1cC5oIHdpdGggY2xlYW51cAorICoKKyAqIE5PVEU6IEkgaGF2ZW4ndCBjbGVhbiB0aGlzIHVwIGNvbnNpZGVyYWJseSwganVzdCBlbm91Z2ggdG8gZ2V0IGl0CisgKiBydW5uaW5nLiBTZWUgaGFsX3BsYXRmb3JtX3NldHVwLmggZm9yIHRoZSBzb3VyY2UuIFNlZQorICogYm9hcmQvY3JhZGxlL21lbXNldHVwLlMgZm9yIGFub3RoZXIgUFhBMjUwIHNldHVwIHRoYXQgaXMKKyAqIG11Y2ggY2xlYW5lci4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8dmVyc2lvbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CisKKy8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCisgICAubWFjcm8gQ1BXQUlUIHJlZworICAgbXJjCXAxNSwwLFxyZWcsYzIsYzAsMAorICAgbW92CVxyZWcsXHJlZworICAgc3ViCXBjLHBjLCM0CisgICAuZW5kbQorCisKKy8qCisgKglNZW1vcnkgc2V0dXAKKyAqLworCisuZ2xvYmwgbWVtc2V0dXAKK21lbXNldHVwOgorCisJLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJbGRyCQlyMCwJPUdQU1IwCisJbGRyCQlyMSwJPUNGR19HUFNSMF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUFNSMQorCWxkcgkJcjEsCT1DRkdfR1BTUjFfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BTUjIKKwlsZHIJCXIxLAk9Q0ZHX0dQU1IyX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQU1IzCisJbGRyCQlyMSwJPUNGR19HUFNSM19WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUENSMAorCWxkcgkJcjEsCT1DRkdfR1BDUjBfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BDUjEKKwlsZHIJCXIxLAk9Q0ZHX0dQQ1IxX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQQ1IyCisJbGRyCQlyMSwJPUNGR19HUENSMl9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUENSMworCWxkcgkJcjEsCT1DRkdfR1BDUjNfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BEUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQRFIwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIxCisJbGRyCQlyMSwJPUNGR19HUERSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUERSMgorCWxkcgkJcjEsCT1DRkdfR1BEUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BEUjMKKwlsZHIJCXIxLAk9Q0ZHX0dQRFIzX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIwX0wKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIwX0xfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjBfVQorCWxkcgkJcjEsCT1DRkdfR0FGUjBfVV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMV9MCisJbGRyCQlyMSwJPUNGR19HQUZSMV9MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIxX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIxX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjJfTAorCWxkcgkJcjEsCT1DRkdfR0FGUjJfTF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMl9VCisJbGRyCQlyMSwJPUNGR19HQUZSMl9VX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIzX0wKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIzX0xfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjNfVQorCWxkcgkJcjEsCT1DRkdfR0FGUjNfVV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1QU1NSCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCisJbGRyCQlyMSwJPUNGR19QU1NSX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlCQkJCQkgICAgKi8KKwkvKgkJCQkJCQkJICAgICovCisJLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzCSAgICAqLworCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KKwkvKiBDaGFwdGVyIDEwLgkJCQkJCQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAxOiBXYWl0IGZvciBhdCBsZWFzdCAyMDAgbWljcm9zZWRvbmRzIHRvIGFsbG93IGludGVybmFsCSAgICAqLworCS8qCSAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4JICAgICovCisJLyoJICAgRklYTUU6IGNhbiBiZSBvcHRpbWl6ZWQgbGF0ZXIJCQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KKwltb3YgcjIsICMwCisJc3RyIHIyLCBbcjNdCisJbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLworCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5CSAgICAqLworMToKKwlsZHIgcjIsIFtyM10KKwljbXAgcjQsIHIyCisJYmd0IDFiCisKK21lbV9pbml0OgorCisJbGRyCXIxLCAgPU1FTUNfQkFTRQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlCQkJICAgICovCisKKwkvKiBNU0MwOiBuQ1MoMCwxKQkJCQkJCSAgICAqLworCWxkcglyMiwgICA9Q0ZHX01TQzBfVkFMCisJc3RyCXIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQorCWxkcglyMiwgICBbcjEsICNNU0MwX09GRlNFVF0JLyogcmVhZCBiYWNrIHRvIGVuc3VyZQkgICAgKi8KKwkJCQkJCS8qIHRoYXQgZGF0YSBsYXRjaGVzCSAgICAqLworCS8qIE1TQzE6IG5DUygyLDMpCQkJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NU0MxX1ZBTAorCXN0cglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQorCWxkcglyMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQorCisJLyogTVNDMjogbkNTKDQsNSkJCQkJCQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX01TQzJfVkFMCisJc3RyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCisJbGRyCXIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZQkJCQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBNRUNSOiBNZW1vcnkgRXhwYW5zaW9uIENhcmQgUmVnaXN0ZXIJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NRUNSX1ZBTAorCXN0cglyMiwgIFtyMSwgI01FQ1JfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUVDUl9PRkZTRVRdCisKKwkvKiBNQ01FTTA6IENhcmQgSW50ZXJmYWNlIHNsb3QgMCB0aW1pbmcJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ01FTTBfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNNRU0wX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DTUVNMF9PRkZTRVRdCisKKwkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ01FTTFfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNNRU0xX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DTUVNMV9PRkZTRVRdCisKKwkvKiBNQ0FUVDA6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMAkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX01DQVRUMF9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0FUVDBfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNBVFQwX09GRlNFVF0KKworCS8qIE1DQVRUMTogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAxCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNBVFQxX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ0FUVDFfT0ZGU0VUXQorCisJLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMAkJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ0lPMF9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0lPMF9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ0lPMF9PRkZTRVRdCisKKwkvKiBNQ0lPMTogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAxCQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX01DSU8xX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DSU8xX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DSU8xX09GRlNFVF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDJjOiBXcml0ZSBGTFlDTkZHICBGSVhNRTogd2hhdCdzIHRoYXQ/Pz8JCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwlsZHIJcjIsICA9Q0ZHX0ZMWUNORkdfVkFMCisJc3RyCXIyLCAgW3IxLCAjRkxZQ05GR19PRkZTRVRdCisJc3RyCXIyLAlbcjEsICNGTFlDTkZHX09GRlNFVF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldAkgICAgKi8KKwkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLgkJCSAgICAqLworCisJbGRyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWxkcglyMiwJPTB4RkZGCisJYmljCXI0LAlyNCwgcjIKKworCWxkcglyMywJPUNGR19NRFJFRlJfVkFMCisJYW5kCXIzLAlyMywgIHIyCisKKwlvcnIJcjQsCXI0LCByMworCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIJICAgICovCisKKwlvcnIJcjQsICByNCwgI01EUkVGUl9LMFJVTgorCW9ycglyNCwgIHI0LCAjTURSRUZSX0swREI0CisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBGUkVFCisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBEQjIKKwlvcnIJcjQsICByNCwgI01EUkVGUl9LMURCMgorCWJpYwlyNCwgIHI0LCAjTURSRUZSX0sxRlJFRQorCWJpYwlyNCwgIHI0LCAjTURSRUZSX0syRlJFRQorCisJc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUgkgICAgKi8KKwlsZHIJcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCisJLyogTm90ZTogcHJlc2VydmUgdGhlIG1kcmVmciB2YWx1ZSBpbiByNAkJCSAgICAqLworCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzCQkgICAgKi8KKworCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mCSAgICAqLworCS8qIHN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkuIE5vdGUgdGhhdCBTWExDUiBuZWVkIG5vdCBiZSB3cml0dGVuICAgKi8KKwkvKiBhdCB0aGlzIHRpbWUuCQkJCQkJICAgICovCisKKwlsZHIJcjIsICA9Q0ZHX1NYQ05GR19WQUwKKwlzdHIJcjIsICBbcjEsICNTWENORkdfT0ZGU0VUXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJYmljCXI0LCByNCwgIyhNRFJFRlJfSzJGUkVFIHxNRFJFRlJfSzFGUkVFIHwgTURSRUZSX0swRlJFRSkKKworCW9ycglyNCwgcjQsICNNRFJFRlJfSzFSVU4KKwliaWMJcjQsIHI0LCAjTURSRUZSX0syREIyCisJc3RyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWxkcglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCWJpYwlyNCwgcjQsICNNRFJFRlJfU0xGUlNICisJc3RyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWxkcglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCW9ycglyNCwgcjQsICNNRFJFRlJfRTFQSU4KKwlzdHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisJbGRyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCisJbm9wCisJbm9wCisKKworCS8qIFN0ZXAgNGQ6IHdyaXRlIE1EQ05GRyB3aXRoIE1EQ05GRzpERXggZGVhc3NlcnRlZCAoc2V0IHRvIDApLCB0byAgKi8KKwkvKgkgICAgY29uZmlndXJlIGJ1dCBub3QgZW5hYmxlIGVhY2ggU0RSQU0gcGFydGl0aW9uIHBhaXIuCSAgICAqLworCisJbGRyCXI0LAk9Q0ZHX01EQ05GR19WQUwKKwliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTB8TURDTkZHX0RFMSkKKwliaWMJcjQsCXI0LAkjKE1EQ05GR19ERTJ8TURDTkZHX0RFMykKKworCXN0cglyNCwJW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcJICAgICovCisJbGRyCXI0LAlbcjEsICNNRENORkdfT0ZGU0VUXQorCisKKwkvKiBTdGVwIDRlOiBXYWl0IGZvciB0aGUgY2xvY2sgdG8gdGhlIFNEUkFNcyB0byBzdGFiaWxpemUsCSAgICAqLworCS8qCSAgICAxMDAuLjIwMCC1c2VjLgkJCQkJICAgICovCisKKwlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KKwltb3YgcjIsICMwCisJc3RyIHIyLCBbcjNdCisJbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLworCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5CSAgICAqLworMToKKwkgICAgbGRyIHIyLCBbcjNdCisJICAgIGNtcCByNCwgcjIKKwkgICAgYmd0IDFiCisKKworCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkJICAgICovCisJLyoJICAgIGF0dGVtcHRpbmcgbm9uLWJ1cnN0IHJlYWQgb3Igd3JpdGUgYWNjZXNzZXMgdG8gZGlzYWJsZWQgKi8KKwkvKgkgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLworCS8qCSAgICBkb2N1bWVudGVkIGluIFNEUkFNIGRhdGEgc2hlZXRzLiBUaGUgYWRkcmVzcyhlcykgdXNlZCAgICovCisJLyoJICAgIGZvciB0aGlzIHB1cnBvc2UgbXVzdCBub3QgYmUgY2FjaGVhYmxlLgkJICAgICovCisKKwlsZHIJcjMsCT1DRkdfRFJBTV9CQVNFCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisKKworCS8qIFN0ZXAgNGc6IFdyaXRlIE1EQ05GRyB3aXRoIGVuYWJsZSBiaXRzIGFzc2VydGVkCQkgICAgKi8KKwkvKgkgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLgkJCQkgICAgKi8KKworCWxkcglyMywJW3IxLCAjTURDTkZHX09GRlNFVF0KKwltb3YJcjQsIHIzCisJb3JyCXIzLAlyMywJI01EQ05GR19ERTAKKwlzdHIJcjMsCVtyMSwgI01EQ05GR19PRkZTRVRdCisJbW92CXIwLCByMworCisJLyogU3RlcCA0aDogV3JpdGUgTURNUlMuCQkJCQkgICAgKi8KKworCWxkcglyMiwgID1DRkdfTURNUlNfVkFMCisJc3RyCXIyLCAgW3IxLCAjTURNUlNfT0ZGU0VUXQorCisJLyogZW5hYmxlIEFQRCAqLworCWxkcglyMywgIFtyMSwgI01EUkVGUl9PRkZTRVRdCisJb3JyCXIzLCAgcjMsICAjTURSRUZSX0FQRAorCXN0cglyMywgIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwkvKiBXZSBhcmUgZmluaXNoZWQgd2l0aCBJbnRlbCdzIG1lbW9yeSBjb250cm9sbGVyIGluaXRpYWxpc2F0aW9uICAgICovCisKK3NldHZvbHRhZ2U6CisKKwltb3YJcjEwLAlscgorCWJsCWluaXRQWEF2b2x0YWdlCS8qIEluIGNhc2UgdGhlIGJvYXJkIGlzIHJlYm9vdGluZyB3aXRoIGEgICAgKi8KKwltb3YJbHIsCXIxMAkvKiBsb3cgdm9sdGFnZSByYWlzZSBpdCB1cCB0byBhIGdvb2Qgb25lLiAgICovCisKK3dha2V1cDoKKwkvKiBBcmUgd2Ugd2FraW5nIGZyb20gc2xlZXA/ICovCisJbGRyCXIwLAk9UkNTUgorCWxkcglyMSwJW3IwXQorCWFuZAlyMSwJcjEsICMoUkNTUl9HUFIgfCBSQ1NSX1NNUiB8IFJDU1JfV0RSIHwgUkNTUl9IV1IpCisJc3RyCXIxLAlbcjBdCisJdGVxCXIxLAkjUkNTUl9TTVIKKworCWJuZQlpbml0aXJxcworCisJbGRyCXIwLAk9UFNTUgorCW1vdglyMSwJI1BTU1JfUEgKKwlzdHIJcjEsCVtyMF0KKworCS8qIGlmIHNvLCByZXN1bWUgYXQgUFNQUiAqLworCWxkcglyMCwJPVBTUFIKKwlsZHIJcjEsCVtyMF0KKwltb3YJcGMsCXIxCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbml0aXJxczoKKworCW1vdglyMSwgICMwCQkvKiBjbGVhciBpbnQuIGxldmVsIHJlZ2lzdGVyIChJUlEsIG5vdCBGSVEpICovCisJbGRyCXIyLCAgPUlDTFIKKwlzdHIJcjEsICBbcjJdCisKKwlsZHIJcjIsICA9SUNNUgkvKiBtYXNrIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBjb250cm9sbGVyICAgICovCisJc3RyCXIxLCAgW3IyXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIENsb2NrIGluaXRpYWxpc2F0aW9uCQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbml0Y2xrczoKKworCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KKworCS8qIFR1cm4gT2ZmIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgKGV4Y2VwdCBmb3IgbWVtb3J5KQkgICAgKi8KKwkvKiBmb3IgcmUtY29uZmlndXJhdGlvbi4JCQkJCSAgICAqLworCWxkcglyMSwgID1DS0VOCisJbGRyCXIyLCAgPUNGR19DS0VOCisJc3RyCXIyLCAgW3IxXQorCisJLyogLi4uIGFuZCB3cml0ZSB0aGUgY29yZSBjbG9jayBjb25maWcgcmVnaXN0ZXIJCQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX0NDQ1IKKwlsZHIJcjEsICA9Q0NDUgorCXN0cglyMiwgIFtyMV0KKworCS8qIFR1cm4gb24gdHVyYm8gbW9kZSAqLworCW1yYwlwMTQsIDAsIHIyLCBjNiwgYzAsIDAKKwlvcnIJcjIsIHIyLCAjMHhCCQkvKiBUdXJibywgRmFzdC1CdXMsIEZyZXEgY2hhbmdlKiovCisJbWNyCXAxNCwgMCwgcjIsIGM2LCBjMCwgMAorCisJLyogUmUtd3JpdGUgTURSRUZSICovCisJbGRyCXIxLCA9TUVNQ19CQVNFCisJbGRyCXIyLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCXN0cglyMiwgW3IxLCAjTURSRUZSX09GRlNFVF0KKyNpZmRlZiBSVEMKKwkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyCQkgICAgKi8KKwlsZHIJcjEsICA9T1NDQworCW1vdglyMiwgICNPU0NDX09PTgorCXN0cglyMiwgIFtyMV0KKworCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMCSAgICAqLworCS8qIGhhcyBzZXR0bGVkLgkJCQkJCQkgICAgKi8KKzYwOgorCWxkcglyMiwgW3IxXQorCWFuZHMJcjIsIHIyLCAjMQorCWJlcQk2MGIKKyNlbHNlCisjZXJyb3IgIlJUQyBub3QgZGVmaW5lZCIKKyNlbmRpZgorCisJLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMJCQkJICAgICovCisgICAgbGRyIHIwLCA9SUNNUiAvKiBlbmFibGUgbm8gc291cmNlcyAqLworCW1vdiByMSwgIzAKKyAgICBzdHIgcjEsIFtyMF0KKwkvKiBGSVhNRSAqLworCisvLyAjZGVmaW5lIE5PREVCVUcKKyNpZmRlZiBOT0RFQlVHCisJLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCisJbW92CXIwLCMwCisJbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLworCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCisKKwkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLworCW1vdglyMCwjMHg4MDAwMDAwMAorCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLworCisjZW5kaWYKKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBFbmQgbWVtc2V0dXAJCQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitlbmRtZW1zZXR1cDoKKworCW1vdglwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL2Fkc3ZpeC9wY21jaWEuYyBiL2JvYXJkL2Fkc3ZpeC9wY21jaWEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTViZTAxCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRzdml4L3BjbWNpYS5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDQKKyAqIFJvYmVydCBXaGFsZXksIEFwcGxpZWQgRGF0YSBTeXN0ZW1zLCBJbmMuIHJ3aGFsZXlAYXBwbGllZGRhdGEubmV0CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+CisKK3ZvaWQgcGNtY2lhX3Bvd2VyX29uKHZvaWQpCit7CisjaWYgMAorCWlmICghKEdQTFIoMjApICYgR1BJT19iaXQoMjApKSkgeyAvKiAzLjNWICovCisJCUdQQ1IoODEpID0gR1BJT19iaXQoODEpOworCQlHUFNSKDgyKSA9IEdQSU9fYml0KDgyKTsKKwl9CisJZWxzZSBpZiAoIShHUExSKDIxKSAmIEdQSU9fYml0KDIxKSkpIHsgLyogNS4wViAqLworCQlHUENSKDgxKSA9IEdQSU9fYml0KDgxKTsKKwkJR1BDUig4MikgPSBHUElPX2JpdCg4Mik7CisJfQorI2Vsc2UKKyN3YXJuaW5nICJCb2FyZCB3aWxsIG9ubHkgc3VwcGx5IDVWLCB3YWl0IGZvciBuZXh0IEhXIHNwaW4gZm9yIHNlbGVjdGFibGUgcG93ZXIiCisJLyogNS4wViAqLworCUdQQ1IoODEpID0gR1BJT19iaXQoODEpOworCUdQQ1IoODIpID0gR1BJT19iaXQoODIpOworI2VuZGlmCisKKwl1ZGVsYXkoMzAwMDAwKTsKKworCS8qIHJlc2V0IHRoZSBjYXJkICovCisJR1BTUig1MikgPSBHUElPX2JpdCg1Mik7CisKKwkvKiBlbmFibGUgUENNQ0lBICovCisJR1BDUig4MykgPSBHUElPX2JpdCg4Myk7CisKKwkvKiBjbGVhciByZXNldCAqLworCXVkZWxheSgxMCk7CisJR1BDUig1MikgPSBHUElPX2JpdCg1Mik7CisKKwl1ZGVsYXkoMjAwMDApOworfQorCit2b2lkIHBjbWNpYV9wb3dlcl9vZmYodm9pZCkKK3sKKwkvKiAwViAqLworCUdQU1IoODEpID0gR1BJT19iaXQoODEpOworCUdQU1IoODIpID0gR1BJT19iaXQoODIpOworCS8qIGRpc2FibGUgUENNQ0lBICovCisJR1BTUig4MykgPSBHUElPX2JpdCg4Myk7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9hZHN2aXgvcHhhdm9sdGFnZS5TIGIvYm9hcmQvYWRzdml4L3B4YXZvbHRhZ2UuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAzNTljCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYWRzdml4L3B4YXZvbHRhZ2UuUwpAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogUm9iZXJ0IFdoYWxleSwgQXBwbGllZCBEYXRhIFN5c3RlbXMsIEluYy4gcndoYWxleUBhcHBsaWVkZGF0YS5uZXQKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKworI2RlZmluZSBMVEMxNjYzX0FERFIgICAgMHgyMAorCisjZGVmaW5lIExUQzE2NjNfU1kJMHgwMQkvKiBTeW5jIEFDSyAqLworI2RlZmluZSBMVEMxNjYzX1NECTB4MDQJLyogc2h1dGRvd24gKi8KKyNkZWZpbmUgTFRDMTY2M19CRwkweDA0CS8qIEludGVybmFsIFZvbHRhZ2UgUmVmICovCisKKyNkZWZpbmUgVk9MVF8xXzU1ICAgICAgICAgMTggICAgLyogREFDIHZhbHVlIGZvciAxLjU1ViAqLworCisJCS5nbG9iYWwJaW5pdFBYQXZvbHRhZ2UKKworQCBTZXQgdGhlIHZvbHRhZ2UgdG8gMS41NVYgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcyBzbyB3ZSBjYW4gcnVuCitAIGF0IGEgaGlnaCBjbG9jayBzcGVlZCBhbmQgYm9vdCBxdWlja2x5LiAgTm90ZSB0aGF0IHRoaXMgaXMgbmVjZXNzYXJ5CitAIGJlY2F1c2UgdGhlIHJlc2V0IGJ1dHRvbiBkb2VzIG5vdCByZXNldCB0aGUgQ1BVIHZvbHRhZ2UsIHNvIGlmIHRoZQorQCB2b2x0YWdlIHdhcyBsb3cgKHNheSAwLjg1VikgdGhlbiB0aGUgQ1BVIHdvdWxkIGNyYXNoIHdpdGhvdXQgdGhpcworQCByb3V0aW5lCisKK0AgVGhpcyByb3V0aW5lIGNsb2JiZXJzIHIwLXI0CisKK2luaXRpYWxpemVpMmM6CisKKwkJbGRyCXIyLCA9Q0tFTgorCQlsZHIJcjMsIFtyMl0KKwkJb3JyCXIzLCByMywgI0NLRU4xNV9QV1JJMkMKKwkJc3RyCXIzLCBbcjJdCisKKwkJbGRyCXIyLCA9UENGUgorCQlsZHIJcjMsIFtyMl0KKwkJb3JyCXIzLCByMywgI1BDRlJfUEkyQ19FTgorCQlzdHIJcjMsIFtyMl0KKworCQkvKiBkZWxheSBmb3IgYWJvdXQgMjUwbXNlYworCQkgKi8KKwkJbGRyCXIzLCA9T1NDUgorCQltb3YJcjIsICMwCisJCXN0cglyMiwgW3IzXQorCQlsZHIJcjEsID0weEMwMDAwCisKKzE6CisJCWxkcglyMiwgW3IzXQorCQljbXAJcjEsIHIyCisJCWJndAkxYgorCQlsZHIJcjAsID1QV1JJQ1IKKwkJbGRyCXIxLCBbcjBdCisJCWJpYwlyMSwgcjEsICMoSUNSX01BIHwgSUNSX1NUQVJUIHwgSUNSX1NUT1ApCisJCXN0cglyMSwgW3IwXQorCisJCW9ycglyMSwgcjEsICNJQ1JfVVIKKwkJc3RyCXIxLCBbcjBdCisKKwkJbGRyCXIyLCA9UFdSSVNSCisJCWxkcglyMywgPTB4N2ZmCisJCXN0cglyMywgW3IyXQorCisJCWJpYwlyMSwgcjEsICNJQ1JfVVIKKwkJc3RyCXIxLCBbcjBdCisKKwkJbW92CXIxLCAjKElDUl9HQ0QgfCBJQ1JfU0NMRSkKKwkJc3RyCXIxLCBbcjBdCisKKwkJb3JyCXIxLCByMSwgI0lDUl9JVUUKKwkJc3RyCXIxLCBbcjBdCisKKwkJb3JyCXIxLCByMSwgI0lDUl9GTQorCQlzdHIJcjEsIFtyMF0KKworCQkvKiBkZWxheSBmb3IgYWJvdXQgMW1zZWMKKwkJICovCisJCWxkcglyMywgPU9TQ1IKKwkJbW92CXIyLCAjMAorCQlzdHIJcjIsIFtyM10KKwkJbGRyCXIxLCA9MHhDMDAKKworMToKKwkJbGRyCXIyLCBbcjNdCisJCWNtcAlyMSwgcjIKKwkJYmd0CTFiCisJCW1vdglwYywgbHIKKworc2VuZGJ5dGVpMmM6CisJCWxkcglyMywgPVBXUklEQlIKKwkJc3RyCXIwLCBbcjNdCisJCWxkcglyMywgPVBXUklDUgorCQlsZHIJcjAsIFtyM10KKwkJb3JyCXIwLCByMCwgcjEKKwkJYmljCXIwLCByMCwgcjIKKwkJc3RyCXIwLCBbcjNdCisJCW9ycglyMCwgcjAsICNJQ1JfVEIKKwkJc3RyCXIwLCBbcjNdCisKKwkJbW92CXIyLCAjMHgxMDAwMDAKKword2FpdGZvcnR4ZW1wdHlpMmM6CisKKwkJbGRyCXIwLCA9UFdSSVNSCisJCWxkcglyMSwgW3IwXQorCisJCS8qIHRha2UgaXQgZnJvbSB0aGUgdG9wIGlmIHdlIGRvbid0IGdldCBlbXB0eSBhZnRlciBhIHdoaWxlICovCisJCXN1YnMJcjIsIHIyLCAjMQorCQltb3ZlcQlsciwgcjQKKwkJYmVxCWluaXRQWEF2b2x0YWdlCisKKwkJdHN0CXIxLCAjSVNSX0lURQorCisJCWJlcQl3YWl0Zm9ydHhlbXB0eWkyYworCisJCW9ycglyMSwgcjEsICNJU1JfSVRFCisJCXN0cglyMSwgW3IwXQorCisJCW1vdglwYywgbHIKKworaW5pdFBYQXZvbHRhZ2U6CisKKwkJbW92CXI0LCBscgorCisJCWJsCXNldGxlZHMKKworCQlibAlpbml0aWFsaXplaTJjCisKKwkJYmwJc2V0bGVkcworCisJCS8qIG5vdyBzZW5kIHRoZSByZWFsIG1lc3NhZ2UgdG8gc2V0IHRoZSBjb3JyZWN0IHZvbHRhZ2UgKi8KKwkJbGRyCXIwLCA9TFRDMTY2M19BRERSCisJCW1vdglyMCwgcjAsIExTTCAjMQorCQltb3YJcjEsICNJQ1JfU1RBUlQKKwkJbGRyCXIyLCA9KElDUl9TVE9QIHwgSUNSX0FMRElFIHwgSUNSX0FDS05BSykKKwkJYmwJc2VuZGJ5dGVpMmMKKworCQlibAlzZXRsZWRzCisKKwkJbW92CXIwLCAjTFRDMTY2M19CRworCQltb3YJcjEsICMwCisJCW1vdglyMiwgIyhJQ1JfU1RPUCB8IElDUl9TVEFSVCkKKwkJYmwJc2VuZGJ5dGVpMmMKKworCQlibAlzZXRsZWRzCisKKwkJbGRyCXIwLCA9Vk9MVF8xXzU1CisJCWFuZAlyMCwgcjAsICMweGZmCisJCW1vdglyMSwgIzAKKwkJbW92CXIyLCAjKElDUl9TVE9QIHwgSUNSX1NUQVJUKQorCQlibAlzZW5kYnl0ZWkyYworCisJCWJsCXNldGxlZHMKKworCQlsZHIJcjAsID1WT0xUXzFfNTUKKwkJbW92CXIwLCByMCwgQVNSICM4CisJCWFuZAlyMCwgcjAsICMweGZmCisJCW1vdglyMSwgI0lDUl9TVE9QCisJCW1vdglyMiwgI0lDUl9TVEFSVAorCQlibAlzZW5kYnl0ZWkyYworCisJCWJsCXNldGxlZHMKKworCQlAIGRlbGF5IGEgbGl0dGxlIGZvciB0aGUgdm9sYXRhZ2UgdG8gc3RhYmxpemUKKwkJbGRyCXIzLCA9T1NDUgorCQltb3YJcjIsICMwCisJCXN0cglyMiwgW3IzXQorCQlsZHIJcjEsID0weEMwCisKKzE6CisJCWxkcglyMiwgW3IzXQorCQljbXAJcjEsIHIyCisJCWJndAkxYgorCQltb3YJcGMsIHI0CisKK3NldGxlZHM6CisJbW92CQlwYywgbHIKKworCWxkcgkJcjUsID0weDQwZTAwMDU4CisJbGRyCQlyMywgW3I1XQorCWJpYwkJcjMsIHIzLCAjMHgzCisJc3RyCQlyMywgW3I1XQorCWxkcgkJcjUsID0weDQwZTAwMDBjCisJbGRyCQlyMywgW3I1XQorCW9ycgkJcjMsIHIzLCAjMHgwMDAxMDAwMAorCXN0cgkJcjMsIFtyNV0KKworCUAgaW5uZXIgbG9vcAorCW1vdgkJcjAsICMweDIKKzE6CisKKwlsZHIJCXI1LCA9MHg0MGUwMDAxOAorCW1vdgkJcjMsICMweDAwMDEwMDAwCisJc3RyCQlyMywgW3I1XQorCisJQCBvdXRlciBsb29wCisJbW92CQlyMywgIzB4MDBGMDAwMDAKKzI6CisJc3VicwkJcjMsIHIzLCAjMQorCWJuZQkJMmIKKworCWxkcgkJcjUsID0weDQwZTAwMDI0CisJbW92CQlyMywgIzB4MDAwMTAwMDAKKwlzdHIJCXIzLCBbcjVdCisKKwlAIG91dGVyIGxvb3AKKwltb3YJCXIzLCAjMHgwMEYwMDAwMAorMzoKKwlzdWJzCQlyMywgcjMsICMxCisJYm5lCQkzYgorCisJc3VicwkJcjAsIHIwLCAjMQorCWJuZQkJMWIKKworCW1vdgkJcGMsIGxyCisKZGlmZiAtLWdpdCBhL2JvYXJkL2Fkc3ZpeC91LWJvb3QubGRzIGIvYm9hcmQvYWRzdml4L3UtYm9vdC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjMzcxZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2Fkc3ZpeC91LWJvb3QubGRzCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iKQorT1VUUFVUX0FSQ0goYXJtKQorRU5UUlkoX3N0YXJ0KQorU0VDVElPTlMKK3sKKwkuID0gMHgwMDAwMDAwMDsKKworCS4gPSBBTElHTig0KTsKKwkudGV4dCAgICAgIDoKKwl7CisJICBjcHUvcHhhL3N0YXJ0Lm8JKC50ZXh0KQorCSAgKigudGV4dCkKKwl9CisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmRhdGEgOiB7ICooLmRhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZ290IDogeyAqKC5nb3QpIH0KKworCV9fdV9ib290X2NtZF9zdGFydCA9IC47CisJLnVfYm9vdF9jbWQgOiB7ICooLnVfYm9vdF9jbWQpIH0KKwlfX3VfYm9vdF9jbWRfZW5kID0gLjsKKworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKSB9CisJX2VuZCA9IC47Cit9CmRpZmYgLS1naXQgYS9jb21tb24vY29tbWFuZC5jIGIvY29tbW9uL2NvbW1hbmQuYwppbmRleCA2NGU1NmFmLi4yYjRjNTU0IDEwMDY0NAotLS0gYS9jb21tb24vY29tbWFuZC5jCisrKyBiL2NvbW1vbi9jb21tYW5kLmMKQEAgLTEzNiw5ICsxMzYsOSBAQAogCiAJCWlmIChhZHYgPT0gMikgewogCQkJaWYgKHN0cmNtcChhcFswXSwgIi16IikgPT0gMCkKLQkJCQlleHByID0gc3RybGVuKGFwWzFdKSA9PSAwID8gMCA6IDE7Ci0JCQllbHNlIGlmIChzdHJjbXAoYXBbMF0sICItbiIpID09IDApCiAJCQkJZXhwciA9IHN0cmxlbihhcFsxXSkgPT0gMCA/IDEgOiAwOworCQkJZWxzZSBpZiAoc3RyY21wKGFwWzBdLCAiLW4iKSA9PSAwKQorCQkJCWV4cHIgPSBzdHJsZW4oYXBbMV0pID09IDAgPyAwIDogMTsKIAkJCWVsc2UgewogCQkJCWV4cHIgPSAxOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9zcGRfc2RyYW0uYyBiL2NwdS9wcGM0eHgvc3BkX3NkcmFtLmMKaW5kZXggNDRlODI2Zi4uNzk0YTcyYyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9zcGRfc2RyYW0uYworKysgYi9jcHUvcHBjNHh4L3NwZF9zZHJhbS5jCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCSAgICBjYXNlIDB4MDA6CiAJCXJlZnJlc2hfcmF0ZSA9IDE1NjI1OwogCQlicmVhazsKLQkgICAgY2FzZSAweDAxMToKKwkgICAgY2FzZSAweDAxOgogCQlyZWZyZXNoX3JhdGUgPSAxNTYyNS80OwogCQlicmVhazsKIAkgICAgY2FzZSAweDAyOgpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9tbWMuYyBiL2NwdS9weGEvbW1jLmMKaW5kZXggNDQ5NTk2Mi4uZjcwMjBlZSAxMDA2NDQKLS0tIGEvY3B1L3B4YS9tbWMuYworKysgYi9jcHUvcHhhL21tYy5jCkBAIC03MiwxMyArNzIsMTEgQEAKIAogCXN0YXR1cyA9IE1NQ19TVEFUOwogCWRlYnVnKCJNTUMgc3RhdHVzICV4XG4iLCBzdGF0dXMpOwotCWlmIChzdGF0dXMgJiBNTUNfU1RBVF9USU1FX09VVF9SRVNQT05TRSkKLQl7CisJaWYgKHN0YXR1cyAmIE1NQ19TVEFUX1RJTUVfT1VUX1JFU1BPTlNFKSB7CiAJCXJldHVybiAwOwogCX0KIAotCXN3aXRjaCAoY21kYXQgJiAweDMpCi0JeworCXN3aXRjaCAoY21kYXQgJiAweDMpIHsKIAkJY2FzZSBNTUNfQ01EQVRfUjE6CiAJCWNhc2UgTU1DX0NNREFUX1IzOgogCQkJd29yZHMgPSAzOwpAQCAtOTEsOCArODksNyBAQAogCQlkZWZhdWx0OgogCQkJcmV0dXJuIDA7CiAJfQotCWZvciAoaSA9IHdvcmRzLTE7IGkgPj0gMDsgaS0tKQotCXsKKwlmb3IgKGkgPSB3b3Jkcy0xOyBpID49IDA7IGktLSkgewogCQl1bG9uZyByZXNfZmlmbyA9IE1NQ19SRVM7CiAJCWludCBvZmZzZXQgPSBpIDw8IDE7CiAKQEAgLTEwMCw4ICs5Nyw3IEBACiAJCXJlc3Bbb2Zmc2V0KzFdID0gKCh1Y2hhciAqKSZyZXNfZmlmbylbMV07CiAJfQogI2lmZGVmIE1NQ19ERUJVRwotCWZvciAoaT0wOyBpPHdvcmRzKjI7IGkgKz0gMikKLQl7CisJZm9yIChpPTA7IGk8d29yZHMqMjsgaSArPSAyKSB7CiAJCXByaW50ZigiTU1DIHJlc3BbJWRdID0gJTAyeFxuIiwgaSwgcmVzcFtpXSk7CiAJCXByaW50ZigiTU1DIHJlc3BbJWRdID0gJTAyeFxuIiwgaSsxLCByZXNwW2krMV0pOwogCX0KQEAgLTExOCw4ICsxMTQsNyBAQAogCXVzaG9ydCBhcmdoLCBhcmdsOwogCXVsb25nIHN0YXR1czsKIAotCWlmIChsZW4gPT0gMCkKLQl7CisJaWYgKGxlbiA9PSAwKSB7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTQzLDE2ICsxMzgsMjEgQEAKIAogCiAJTU1DX0lfTUFTSyA9IH5NTUNfSV9NQVNLX1JYRklGT19SRF9SRVE7Ci0Jd2hpbGUgKGxlbikKLQl7Ci0JCWlmIChNTUNfSV9SRUcgJiBNTUNfSV9SRUdfUlhGSUZPX1JEX1JFUSkKLQkJeworCXdoaWxlIChsZW4pIHsKKwkJaWYgKE1NQ19JX1JFRyAmIE1NQ19JX1JFR19SWEZJRk9fUkRfUkVRKSB7CisjaWZkZWYgQ09ORklHX1BYQTI3WAorCQkJaW50IGk7CisJCQlmb3IgKGk9bWluKGxlbiwzMik7IGk7IGktLSkgeworCQkJCSpkc3QrKyA9ICogKCh2b2xhdGlsZSB1Y2hhciAqKSAmTU1DX1JYRklGTyk7CisJCQkJbGVuLS07CisJCQl9CisjZWxzZQogCQkJKmRzdCsrID0gTU1DX1JYRklGTzsKIAkJCWxlbi0tOworI2VuZGlmCiAJCX0KIAkJc3RhdHVzID0gTU1DX1NUQVQ7Ci0JCWlmIChzdGF0dXMgJiBNTUNfU1RBVF9FUlJPUlMpCi0JCXsKKwkJaWYgKHN0YXR1cyAmIE1NQ19TVEFUX0VSUk9SUykgewogCQkJcHJpbnRmKCJNTUNfU1RBVCBlcnJvciAlbHhcbiIsIHN0YXR1cyk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTE2MCw4ICsxNjAsNyBAQAogCU1NQ19JX01BU0sgPSB+TU1DX0lfTUFTS19EQVRBX1RSQU5fRE9ORTsKIAl3aGlsZSAoIShNTUNfSV9SRUcgJiBNTUNfSV9SRUdfREFUQV9UUkFOX0RPTkUpKTsKIAlzdGF0dXMgPSBNTUNfU1RBVDsKLQlpZiAoc3RhdHVzICYgTU1DX1NUQVRfRVJST1JTKQotCXsKKwlpZiAoc3RhdHVzICYgTU1DX1NUQVRfRVJST1JTKSB7CiAJCXByaW50ZigiTU1DX1NUQVQgZXJyb3IgJWx4XG4iLCBzdGF0dXMpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMTc3LDggKzE3Niw3IEBACiAJdXNob3J0IGFyZ2gsIGFyZ2w7CiAJdWxvbmcgc3RhdHVzOwogCi0JaWYgKGxlbiA9PSAwKQotCXsKKwlpZiAobGVuID09IDApIHsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yMDAsMjUgKzE5OCwyMCBAQAogCQkJTU1DX0NNREFUX1IxfE1NQ19DTURBVF9XUklURXxNTUNfQ01EQVRfQkxPQ0t8TU1DX0NNREFUX0RBVEFfRU4pOwogCiAJTU1DX0lfTUFTSyA9IH5NTUNfSV9NQVNLX1RYRklGT19XUl9SRVE7Ci0Jd2hpbGUgKGxlbikKLQl7Ci0JCWlmIChNTUNfSV9SRUcgJiBNTUNfSV9SRUdfVFhGSUZPX1dSX1JFUSkKLQkJeworCXdoaWxlIChsZW4pIHsKKwkJaWYgKE1NQ19JX1JFRyAmIE1NQ19JX1JFR19UWEZJRk9fV1JfUkVRKSB7CiAJCQlpbnQgaSwgYnl0ZXMgPSBtaW4oMzIsbGVuKTsKIAotCQkJZm9yIChpPTA7IGk8Ynl0ZXM7IGkrKykKLQkJCXsKKwkJCWZvciAoaT0wOyBpPGJ5dGVzOyBpKyspIHsKIAkJCQlNTUNfVFhGSUZPID0gKnNyYysrOwogCQkJfQotCQkJaWYgKGJ5dGVzIDwgMzIpCi0JCQl7CisJCQlpZiAoYnl0ZXMgPCAzMikgewogCQkJCU1NQ19QUlRCVUYgPSBNTUNfUFJUQlVGX0JVRl9QQVJUX0ZVTEw7CiAJCQl9CiAJCQlsZW4gLT0gYnl0ZXM7CiAJCX0KIAkJc3RhdHVzID0gTU1DX1NUQVQ7Ci0JCWlmIChzdGF0dXMgJiBNTUNfU1RBVF9FUlJPUlMpCi0JCXsKKwkJaWYgKHN0YXR1cyAmIE1NQ19TVEFUX0VSUk9SUykgewogCQkJcHJpbnRmKCJNTUNfU1RBVCBlcnJvciAlbHhcbiIsIHN0YXR1cyk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTIyOCw4ICsyMjEsNyBAQAogCU1NQ19JX01BU0sgPSB+TU1DX0lfTUFTS19QUkdfRE9ORTsKIAl3aGlsZSAoIShNTUNfSV9SRUcgJiBNTUNfSV9SRUdfUFJHX0RPTkUpKTsKIAlzdGF0dXMgPSBNTUNfU1RBVDsKLQlpZiAoc3RhdHVzICYgTU1DX1NUQVRfRVJST1JTKQotCXsKKwlpZiAoc3RhdHVzICYgTU1DX1NUQVRfRVJST1JTKSB7CiAJCXByaW50ZigiTU1DX1NUQVQgZXJyb3IgJWx4XG4iLCBzdGF0dXMpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMjQ1LDEzICsyMzcsMTEgQEAKIAl1bG9uZyBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBwYXJ0X2xlbiwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQ7CiAJdWxvbmcgbW1jX2Jsb2NrX3NpemUsIG1tY19ibG9ja19hZGRyZXNzOwogCi0JaWYgKHNpemUgPT0gMCkKLQl7CisJaWYgKHNpemUgPT0gMCkgewogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoIW1tY19yZWFkeSkKLQl7CisJaWYgKCFtbWNfcmVhZHkpIHsKIAkJcHJpbnRmKCJQbGVhc2UgaW5pdGlhbCB0aGUgTU1DIGZpcnN0XG4iKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTI2OSwxMyArMjU5LDExIEBACiAJLyogYWxsIGJsb2NrIGFsaWduZWQgYWNjZXNzZXMgKi8KIAlkZWJ1Zygic3JjICVseCBkc3QgJWx4IGVuZCAlbHggcHN0YXJ0ICVseCBwZW5kICVseCBhc3RhcnQgJWx4IGFlbmQgJWx4XG4iLAogCXNyYywgKHVsb25nKWRzdCwgZW5kLCBwYXJ0X3N0YXJ0LCBwYXJ0X2VuZCwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQpOwotCWlmIChwYXJ0X3N0YXJ0KQotCXsKKwlpZiAocGFydF9zdGFydCkgewogCQlwYXJ0X2xlbiA9IG1tY19ibG9ja19zaXplIC0gcGFydF9zdGFydDsKIAkJZGVidWcoInBzIHNyYyAlbHggZHN0ICVseCBlbmQgJWx4IHBzdGFydCAlbHggcGVuZCAlbHggYXN0YXJ0ICVseCBhZW5kICVseFxuIiwKIAkJc3JjLCAodWxvbmcpZHN0LCBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBhbGlnbmVkX3N0YXJ0LCBhbGlnbmVkX2VuZCk7Ci0JCWlmICgobW1jX2Jsb2NrX3JlYWQobW1jX2J1ZiwgYWxpZ25lZF9zdGFydCwgbW1jX2Jsb2NrX3NpemUpKSA8IDApCi0JCXsKKwkJaWYgKChtbWNfYmxvY2tfcmVhZChtbWNfYnVmLCBhbGlnbmVkX3N0YXJ0LCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkgewogCQkJcmV0dXJuIC0xOwogCQl9CiAJCW1lbWNweShkc3QsIG1tY19idWYrcGFydF9zdGFydCwgcGFydF9sZW4pOwpAQCAtMjg0LDIzICsyNzIsMTkgQEAKIAl9CiAJZGVidWcoInNyYyAlbHggZHN0ICVseCBlbmQgJWx4IHBzdGFydCAlbHggcGVuZCAlbHggYXN0YXJ0ICVseCBhZW5kICVseFxuIiwKIAlzcmMsICh1bG9uZylkc3QsIGVuZCwgcGFydF9zdGFydCwgcGFydF9lbmQsIGFsaWduZWRfc3RhcnQsIGFsaWduZWRfZW5kKTsKLQlmb3IgKDsgc3JjIDwgYWxpZ25lZF9lbmQ7IHNyYyArPSBtbWNfYmxvY2tfc2l6ZSwgZHN0ICs9IG1tY19ibG9ja19zaXplKQotCXsKKwlmb3IgKDsgc3JjIDwgYWxpZ25lZF9lbmQ7IHNyYyArPSBtbWNfYmxvY2tfc2l6ZSwgZHN0ICs9IG1tY19ibG9ja19zaXplKSB7CiAJCWRlYnVnKCJhbCBzcmMgJWx4IGRzdCAlbHggZW5kICVseCBwc3RhcnQgJWx4IHBlbmQgJWx4IGFzdGFydCAlbHggYWVuZCAlbHhcbiIsCiAJCXNyYywgKHVsb25nKWRzdCwgZW5kLCBwYXJ0X3N0YXJ0LCBwYXJ0X2VuZCwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQpOwotCQlpZiAoKG1tY19ibG9ja19yZWFkKCh1Y2hhciAqKShkc3QpLCBzcmMsIG1tY19ibG9ja19zaXplKSkgPCAwKQotCQl7CisJCWlmICgobW1jX2Jsb2NrX3JlYWQoKHVjaGFyICopKGRzdCksIHNyYywgbW1jX2Jsb2NrX3NpemUpKSA8IDApIHsKIAkJCXJldHVybiAtMTsKIAkJfQogCX0KIAlkZWJ1Zygic3JjICVseCBkc3QgJWx4IGVuZCAlbHggcHN0YXJ0ICVseCBwZW5kICVseCBhc3RhcnQgJWx4IGFlbmQgJWx4XG4iLAogCXNyYywgKHVsb25nKWRzdCwgZW5kLCBwYXJ0X3N0YXJ0LCBwYXJ0X2VuZCwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQpOwotCWlmIChwYXJ0X2VuZCAmJiBzcmMgPCBlbmQpCi0JeworCWlmIChwYXJ0X2VuZCAmJiBzcmMgPCBlbmQpIHsKIAkJZGVidWcoInBlIHNyYyAlbHggZHN0ICVseCBlbmQgJWx4IHBzdGFydCAlbHggcGVuZCAlbHggYXN0YXJ0ICVseCBhZW5kICVseFxuIiwKIAkJc3JjLCAodWxvbmcpZHN0LCBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBhbGlnbmVkX3N0YXJ0LCBhbGlnbmVkX2VuZCk7Ci0JCWlmICgobW1jX2Jsb2NrX3JlYWQobW1jX2J1ZiwgYWxpZ25lZF9lbmQsIG1tY19ibG9ja19zaXplKSkgPCAwKQotCQl7CisJCWlmICgobW1jX2Jsb2NrX3JlYWQobW1jX2J1ZiwgYWxpZ25lZF9lbmQsIG1tY19ibG9ja19zaXplKSkgPCAwKSB7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJbWVtY3B5KGRzdCwgbW1jX2J1ZiwgcGFydF9lbmQpOwpAQCAtMzE2LDEzICszMDAsMTEgQEAKIAl1bG9uZyBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBwYXJ0X2xlbiwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQ7CiAJdWxvbmcgbW1jX2Jsb2NrX3NpemUsIG1tY19ibG9ja19hZGRyZXNzOwogCi0JaWYgKHNpemUgPT0gMCkKLQl7CisJaWYgKHNpemUgPT0gMCkgewogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoIW1tY19yZWFkeSkKLQl7CisJaWYgKCFtbWNfcmVhZHkpIHsKIAkJcHJpbnRmKCJQbGVhc2UgaW5pdGlhbCB0aGUgTU1DIGZpcnN0XG4iKTsKIAkJcmV0dXJuIC0xOwogCX0KQEAgLTM0MCwxOCArMzIyLDE1IEBACiAJLyogYWxsIGJsb2NrIGFsaWduZWQgYWNjZXNzZXMgKi8KIAlkZWJ1Zygic3JjICVseCBkc3QgJWx4IGVuZCAlbHggcHN0YXJ0ICVseCBwZW5kICVseCBhc3RhcnQgJWx4IGFlbmQgJWx4XG4iLAogCXNyYywgKHVsb25nKWRzdCwgZW5kLCBwYXJ0X3N0YXJ0LCBwYXJ0X2VuZCwgYWxpZ25lZF9zdGFydCwgYWxpZ25lZF9lbmQpOwotCWlmIChwYXJ0X3N0YXJ0KQotCXsKKwlpZiAocGFydF9zdGFydCkgewogCQlwYXJ0X2xlbiA9IG1tY19ibG9ja19zaXplIC0gcGFydF9zdGFydDsKIAkJZGVidWcoInBzIHNyYyAlbHggZHN0ICVseCBlbmQgJWx4IHBzdGFydCAlbHggcGVuZCAlbHggYXN0YXJ0ICVseCBhZW5kICVseFxuIiwKIAkJKHVsb25nKXNyYywgZHN0LCBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBhbGlnbmVkX3N0YXJ0LCBhbGlnbmVkX2VuZCk7Ci0JCWlmICgobW1jX2Jsb2NrX3JlYWQobW1jX2J1ZiwgYWxpZ25lZF9zdGFydCwgbW1jX2Jsb2NrX3NpemUpKSA8IDApCi0JCXsKKwkJaWYgKChtbWNfYmxvY2tfcmVhZChtbWNfYnVmLCBhbGlnbmVkX3N0YXJ0LCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkgewogCQkJcmV0dXJuIC0xOwogCQl9CiAJCW1lbWNweShtbWNfYnVmK3BhcnRfc3RhcnQsIHNyYywgcGFydF9sZW4pOwotCQlpZiAoKG1tY19ibG9ja193cml0ZShhbGlnbmVkX3N0YXJ0LCBtbWNfYnVmLCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkKLQkJeworCQlpZiAoKG1tY19ibG9ja193cml0ZShhbGlnbmVkX3N0YXJ0LCBtbWNfYnVmLCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkgewogCQkJcmV0dXJuIC0xOwogCQl9CiAJCWRzdCArPSBwYXJ0X2xlbjsKQEAgLTM1OSwyOCArMzM4LDIzIEBACiAJfQogCWRlYnVnKCJzcmMgJWx4IGRzdCAlbHggZW5kICVseCBwc3RhcnQgJWx4IHBlbmQgJWx4IGFzdGFydCAlbHggYWVuZCAlbHhcbiIsCiAJc3JjLCAodWxvbmcpZHN0LCBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBhbGlnbmVkX3N0YXJ0LCBhbGlnbmVkX2VuZCk7Ci0JZm9yICg7IGRzdCA8IGFsaWduZWRfZW5kOyBzcmMgKz0gbW1jX2Jsb2NrX3NpemUsIGRzdCArPSBtbWNfYmxvY2tfc2l6ZSkKLQl7CisJZm9yICg7IGRzdCA8IGFsaWduZWRfZW5kOyBzcmMgKz0gbW1jX2Jsb2NrX3NpemUsIGRzdCArPSBtbWNfYmxvY2tfc2l6ZSkgewogCQlkZWJ1ZygiYWwgc3JjICVseCBkc3QgJWx4IGVuZCAlbHggcHN0YXJ0ICVseCBwZW5kICVseCBhc3RhcnQgJWx4IGFlbmQgJWx4XG4iLAogCQlzcmMsICh1bG9uZylkc3QsIGVuZCwgcGFydF9zdGFydCwgcGFydF9lbmQsIGFsaWduZWRfc3RhcnQsIGFsaWduZWRfZW5kKTsKLQkJaWYgKChtbWNfYmxvY2tfd3JpdGUoZHN0LCAodWNoYXIgKilzcmMsIG1tY19ibG9ja19zaXplKSkgPCAwKQotCQl7CisJCWlmICgobW1jX2Jsb2NrX3dyaXRlKGRzdCwgKHVjaGFyICopc3JjLCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkgewogCQkJcmV0dXJuIC0xOwogCQl9CiAJfQogCWRlYnVnKCJzcmMgJWx4IGRzdCAlbHggZW5kICVseCBwc3RhcnQgJWx4IHBlbmQgJWx4IGFzdGFydCAlbHggYWVuZCAlbHhcbiIsCiAJc3JjLCAodWxvbmcpZHN0LCBlbmQsIHBhcnRfc3RhcnQsIHBhcnRfZW5kLCBhbGlnbmVkX3N0YXJ0LCBhbGlnbmVkX2VuZCk7Ci0JaWYgKHBhcnRfZW5kICYmIGRzdCA8IGVuZCkKLQl7CisJaWYgKHBhcnRfZW5kICYmIGRzdCA8IGVuZCkgewogCQlkZWJ1ZygicGUgc3JjICVseCBkc3QgJWx4IGVuZCAlbHggcHN0YXJ0ICVseCBwZW5kICVseCBhc3RhcnQgJWx4IGFlbmQgJWx4XG4iLAogCQlzcmMsICh1bG9uZylkc3QsIGVuZCwgcGFydF9zdGFydCwgcGFydF9lbmQsIGFsaWduZWRfc3RhcnQsIGFsaWduZWRfZW5kKTsKLQkJaWYgKChtbWNfYmxvY2tfcmVhZChtbWNfYnVmLCBhbGlnbmVkX2VuZCwgbW1jX2Jsb2NrX3NpemUpKSA8IDApCi0JCXsKKwkJaWYgKChtbWNfYmxvY2tfcmVhZChtbWNfYnVmLCBhbGlnbmVkX2VuZCwgbW1jX2Jsb2NrX3NpemUpKSA8IDApIHsKIAkJCXJldHVybiAtMTsKIAkJfQogCQltZW1jcHkobW1jX2J1Ziwgc3JjLCBwYXJ0X2VuZCk7Ci0JCWlmICgobW1jX2Jsb2NrX3dyaXRlKGFsaWduZWRfZW5kLCBtbWNfYnVmLCBtbWNfYmxvY2tfc2l6ZSkpIDwgMCkKLQkJeworCQlpZiAoKG1tY19ibG9ja193cml0ZShhbGlnbmVkX2VuZCwgbW1jX2J1ZiwgbW1jX2Jsb2NrX3NpemUpKSA8IDApIHsKIAkJCXJldHVybiAtMTsKIAkJfQogCX0KQEAgLTQxMiw2ICszODYsMTEgQEAKIAlzZXRfR1BJT19tb2RlKCBHUElPOF9NTUNDUzBfTUQgKTsKICNlbmRpZgogCUNLRU4gfD0gQ0tFTjEyX01NQzsgLyogZW5hYmxlIE1NQyB1bml0IGNsb2NrICovCisjaWYgZGVmaW5lZChDT05GSUdfQURTVklYKQorCS8qIHR1cm4gb24gdGhlIHBvd2VyICovCisJR1BDUigxMTQpID0gR1BJT19iaXQoMTE0KTsKKwl1ZGVsYXkoMTAwMCk7CisjZW5kaWYKIAogCW1tY19jc2QuY19zaXplID0gMDsKIApAQCAtNDIzLDIxICs0MDIsMjIgQEAKIAlyZXRyaWVzID0gMTA7CiAJcmVzcCA9IG1tY19jbWQoMCwgMCwgMCwgMCk7CiAJcmVzcCA9IG1tY19jbWQoMSwgMHgwMGZmLCAweGMwMDAsIE1NQ19DTURBVF9JTklUfE1NQ19DTURBVF9CVVNZfE1NQ19DTURBVF9SMyk7Ci0Jd2hpbGUgKHJldHJpZXMtLSAmJiByZXNwICYmICEocmVzcFs0XSAmIDB4ODApKQotCXsKKwl3aGlsZSAocmV0cmllcy0tICYmIHJlc3AgJiYgIShyZXNwWzRdICYgMHg4MCkpIHsKIAkJZGVidWcoInJlc3AgJXggJXhcbiIsIHJlc3BbMF0sIHJlc3BbMV0pOworI2lmZGVmIENPTkZJR19QWEEyN1gKKwkJdWRlbGF5KDEwMDAwKTsKKyNlbHNlCiAJCXVkZWxheSg1MCk7CisjZW5kaWYKIAkJcmVzcCA9IG1tY19jbWQoMSwgMHgwMGZmLCAweGZmMDAsIE1NQ19DTURBVF9CVVNZfE1NQ19DTURBVF9SMyk7CiAJfQogCiAJLyogdHJ5IHRvIGdldCBjYXJkIGlkICovCiAJcmVzcCA9IG1tY19jbWQoMiwgMCwgMCwgTU1DX0NNREFUX1IyKTsKLQlpZiAocmVzcCkKLQl7CisJaWYgKHJlc3ApIHsKIAkJLyogVE9ETyBjb25maWd1cmUgbW1jIGRyaXZlciBkZXBlbmRpbmcgb24gY2FyZCBhdHRyaWJ1dGVzICovCiAJCW1tY19jaWRfdCAqY2lkID0gKG1tY19jaWRfdCAqKXJlc3A7Ci0JCWlmICh2ZXJib3NlKQotCQl7CisJCWlmICh2ZXJib3NlKSB7CiAJCQlwcmludGYoIk1NQyBmb3VuZC4gQ2FyZCBkZXNjaXB0aW9uIGlzOlxuIik7CiAJCQlwcmludGYoIk1hbnVmYWN0dXJlciBJRCA9ICUwMnglMDJ4JTAyeFxuIiwKIAkJCQkJCQljaWQtPmlkWzBdLCBjaWQtPmlkWzFdLCBjaWQtPmlkWzJdKTsKQEAgLTQ1MSw2ICs0MzEsNyBAQAogCQl9CiAJCS8qIGZpbGwgaW4gZGV2aWNlIGRlc2NyaXB0aW9uICovCiAJCW1tY19kZXYuaWZfdHlwZSA9IElGX1RZUEVfTU1DOworCQltbWNfZGV2LnBhcnRfdHlwZSA9IFBBUlRfVFlQRV9ET1M7CiAJCW1tY19kZXYuZGV2ID0gMDsKIAkJbW1jX2Rldi5sdW4gPSAwOwogCQltbWNfZGV2LnR5cGUgPSAwOwpAQCAtNDY4LDggKzQ0OSw3IEBACiAJCS8qIE1NQyBleGlzdHMsIGdldCBDU0QgdG9vICovCiAJCXJlc3AgPSBtbWNfY21kKE1NQ19DTURfU0VUX1JDQSwgTU1DX0RFRkFVTFRfUkNBLCAwLCBNTUNfQ01EQVRfUjEpOwogCQlyZXNwID0gbW1jX2NtZChNTUNfQ01EX1NFTkRfQ1NELCBNTUNfREVGQVVMVF9SQ0EsIDAsIE1NQ19DTURBVF9SMik7Ci0JCWlmIChyZXNwKQotCQl7CisJCWlmIChyZXNwKSB7CiAJCQltbWNfY3NkX3QgKmNzZCA9IChtbWNfY3NkX3QgKilyZXNwOwogCQkJbWVtY3B5KCZtbWNfY3NkLCBjc2QsIHNpemVvZihjc2QpKTsKIAkJCXJjID0gMDsKQEAgLTQ3OCw3ICs0NTgsMTEgQEAKIAkJfQogCX0KIAorI2lmZGVmIENPTkZJR19QWEEyN1gKKwlNTUNfQ0xLUlQgPSAxOwkvKiAxMCBNSHogLSBzZWUgSW50ZWwgZXJyYXRhICovCisjZWxzZQogCU1NQ19DTEtSVCA9IDA7CS8qIDIwIE1IeiAqLworI2VuZGlmCiAJcmVzcCA9IG1tY19jbWQoNywgTU1DX0RFRkFVTFRfUkNBLCAwLCBNTUNfQ01EQVRfUjEpOwogCiAJZmF0X3JlZ2lzdGVyX2RldmljZSgmbW1jX2RldiwxKTsgLyogcGFydGl0aW9ucyBzdGFydCBjb3VudGluZyB3aXRoIDEgKi8KQEAgLTQ5NiwxMSArNDgwLDEwIEBACiBtbWMyaW5mbyh1bG9uZyBhZGRyKQogewogCS8qIEZJWE1FIGhhcmQgY29kZXMgdG8gMzIgTUIgZGV2aWNlICovCi0JaWYgKGFkZHIgPj0gQ0ZHX01NQ19CQVNFICYmIGFkZHIgPCBDRkdfTU1DX0JBU0UgKyAweDAyMDAwMDAwKQotCXsKKwlpZiAoYWRkciA+PSBDRkdfTU1DX0JBU0UgJiYgYWRkciA8IENGR19NTUNfQkFTRSArIDB4MDIwMDAwMDApIHsKIAkJcmV0dXJuIDE7CiAJfQogCXJldHVybiAwOwogfQogCi0jZW5kaWYKKyNlbmRpZgkvKiBDT05GSUdfTU1DICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhLXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCmluZGV4IGE1OTgzOGMuLjQxZDM3ZDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCkBAIC0yMiwxOCArMjIsMTcgQEAKIC8qIEZJWE1FIGhhY2sgc28gdGhhdCBTQS0xMTExLmggd2lsbCB3b3JrIFtjYl0gKi8KIAogI2lmbmRlZiBfX0FTU0VNQkxZX18KLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFdvcmQxNiA7Ci10eXBlZGVmIHVuc2lnbmVkIGludCAgICBXb3JkMzIgOwotdHlwZWRlZiBXb3JkMzIgICAgICAgICAgV29yZCA7Ci10eXBlZGVmIFdvcmQgICAgICAgICAgICBRdWFkIFs0XSA7Ci10eXBlZGVmIHZvaWQgICAgICAgICAgICAqQWRkcmVzcyA7Ci10eXBlZGVmIHZvaWQgICAgICAgICAgICAoKkV4Y3BIbmRscikgKHZvaWQpIDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQJV29yZDE2IDsKK3R5cGVkZWYgdW5zaWduZWQgaW50CVdvcmQzMiA7Cit0eXBlZGVmIFdvcmQzMgkJV29yZCA7Cit0eXBlZGVmIFdvcmQJCVF1YWQgWzRdIDsKK3R5cGVkZWYgdm9pZAkJKkFkZHJlc3MgOwordHlwZWRlZiB2b2lkCQkoKkV4Y3BIbmRscikgKHZvaWQpIDsKICNlbmRpZgogCiAvKgogICogUFhBIENoaXAgc2VsZWN0cwogICovCi0KICNkZWZpbmUgUFhBX0NTMF9QSFlTCTB4MDAwMDAwMDAKICNkZWZpbmUgUFhBX0NTMV9QSFlTCTB4MDQwMDAwMDAKICNkZWZpbmUgUFhBX0NTMl9QSFlTCTB4MDgwMDAwMDAKQEAgLTQxLDUwICs0MCw0NiBAQAogI2RlZmluZSBQWEFfQ1M0X1BIWVMJMHgxMDAwMDAwMAogI2RlZmluZSBQWEFfQ1M1X1BIWVMJMHgxNDAwMDAwMAogCi0KIC8qCiAgKiBQZXJzb25hbCBDb21wdXRlciBNZW1vcnkgQ2FyZCBJbnRlcm5hdGlvbmFsIEFzc29jaWF0aW9uIChQQ01DSUEpIHNvY2tldHMKICAqLwotCiAjZGVmaW5lIFBDTUNJQVBydFNwCTB4MDQwMDAwMDAJLyogUENNQ0lBIFBhcnRpdGlvbiBTcGFjZSBbYnl0ZV0gICAqLwotI2RlZmluZSBQQ01DSUFTcAkoNCpQQ01DSUFQcnRTcCkJLyogUENNQ0lBIFNwYWNlIFtieXRlXSAgICAgICAgICAgICAqLwotI2RlZmluZSBQQ01DSUFJT1NwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBJL08gU3BhY2UgW2J5dGVdICAgICAgICAgKi8KKyNkZWZpbmUgUENNQ0lBU3AJKDQqUENNQ0lBUHJ0U3ApIC8qIFBDTUNJQSBTcGFjZSBbYnl0ZV0JCSAgICovCisjZGVmaW5lIFBDTUNJQUlPU3AJUENNQ0lBUHJ0U3AJLyogUENNQ0lBIEkvTyBTcGFjZSBbYnl0ZV0JICAgKi8KICNkZWZpbmUgUENNQ0lBQXR0clNwCVBDTUNJQVBydFNwCS8qIFBDTUNJQSBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICAgKi8KLSNkZWZpbmUgUENNQ0lBTWVtU3AJUENNQ0lBUHJ0U3AJLyogUENNQ0lBIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgICAqLworI2RlZmluZSBQQ01DSUFNZW1TcAlQQ01DSUFQcnRTcAkvKiBQQ01DSUEgTWVtb3J5IFNwYWNlIFtieXRlXQkgICAqLwogCi0jZGVmaW5lIFBDTUNJQTBTcAlQQ01DSUFTcAkvKiBQQ01DSUEgMCBTcGFjZSBbYnl0ZV0gICAgICAgICAgICovCi0jZGVmaW5lIFBDTUNJQTBJT1NwCVBDTUNJQUlPU3AJLyogUENNQ0lBIDAgSS9PIFNwYWNlIFtieXRlXSAgICAgICAqLworI2RlZmluZSBQQ01DSUEwU3AJUENNQ0lBU3AJLyogUENNQ0lBIDAgU3BhY2UgW2J5dGVdCSAgICovCisjZGVmaW5lIFBDTUNJQTBJT1NwCVBDTUNJQUlPU3AJLyogUENNQ0lBIDAgSS9PIFNwYWNlIFtieXRlXQkgICAqLwogI2RlZmluZSBQQ01DSUEwQXR0clNwCVBDTUNJQUF0dHJTcAkvKiBQQ01DSUEgMCBBdHRyaWJ1dGUgU3BhY2UgW2J5dGVdICovCi0jZGVmaW5lIFBDTUNJQTBNZW1TcAlQQ01DSUFNZW1TcAkvKiBQQ01DSUEgMCBNZW1vcnkgU3BhY2UgW2J5dGVdICAgICovCisjZGVmaW5lIFBDTUNJQTBNZW1TcAlQQ01DSUFNZW1TcAkvKiBQQ01DSUEgMCBNZW1vcnkgU3BhY2UgW2J5dGVdCSAgICovCiAKLSNkZWZpbmUgUENNQ0lBMVNwCVBDTUNJQVNwCS8qIFBDTUNJQSAxIFNwYWNlIFtieXRlXSAgICAgICAgICAgKi8KLSNkZWZpbmUgUENNQ0lBMUlPU3AJUENNQ0lBSU9TcAkvKiBQQ01DSUEgMSBJL08gU3BhY2UgW2J5dGVdICAgICAgICovCisjZGVmaW5lIFBDTUNJQTFTcAlQQ01DSUFTcAkvKiBQQ01DSUEgMSBTcGFjZSBbYnl0ZV0JICAgKi8KKyNkZWZpbmUgUENNQ0lBMUlPU3AJUENNQ0lBSU9TcAkvKiBQQ01DSUEgMSBJL08gU3BhY2UgW2J5dGVdCSAgICovCiAjZGVmaW5lIFBDTUNJQTFBdHRyU3AJUENNQ0lBQXR0clNwCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSBTcGFjZSBbYnl0ZV0gKi8KLSNkZWZpbmUgUENNQ0lBMU1lbVNwCVBDTUNJQU1lbVNwCS8qIFBDTUNJQSAxIE1lbW9yeSBTcGFjZSBbYnl0ZV0gICAgKi8KKyNkZWZpbmUgUENNQ0lBMU1lbVNwCVBDTUNJQU1lbVNwCS8qIFBDTUNJQSAxIE1lbW9yeSBTcGFjZSBbYnl0ZV0JICAgKi8KIAotI2RlZmluZSBfUENNQ0lBKE5iKQkgICAgICAgIAkvKiBQQ01DSUEgWzAuLjFdICAgICAgICAgICAgICAgICAgICovIFwKKyNkZWZpbmUgX1BDTUNJQShOYikJCQkvKiBQQ01DSUEgWzAuLjFdCQkgICAqLyBcCiAJCQkoMHgyMDAwMDAwMCArIChOYikqUENNQ0lBU3ApCi0jZGVmaW5lIF9QQ01DSUFJTyhOYikJX1BDTUNJQSAoTmIpCS8qIFBDTUNJQSBJL08gWzAuLjFdICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgX1BDTUNJQUF0dHIoTmIpCSAgICAgICAgCS8qIFBDTUNJQSBBdHRyaWJ1dGUgWzAuLjFdICAgICAgICAgKi8gXAorI2RlZmluZSBfUENNQ0lBSU8oTmIpCV9QQ01DSUEgKE5iKQkvKiBQQ01DSUEgSS9PIFswLi4xXQkJICAgKi8KKyNkZWZpbmUgX1BDTUNJQUF0dHIoTmIpCQkJLyogUENNQ0lBIEF0dHJpYnV0ZSBbMC4uMV0JICAgKi8gXAogCQkJKF9QQ01DSUEgKE5iKSArIDIqUENNQ0lBUHJ0U3ApCi0jZGVmaW5lIF9QQ01DSUFNZW0oTmIpCSAgICAgICAgCS8qIFBDTUNJQSBNZW1vcnkgWzAuLjFdICAgICAgICAgICAgKi8gXAorI2RlZmluZSBfUENNQ0lBTWVtKE5iKQkJCS8qIFBDTUNJQSBNZW1vcnkgWzAuLjFdCQkgICAqLyBcCiAJCQkoX1BDTUNJQSAoTmIpICsgMypQQ01DSUFQcnRTcCkKIAotI2RlZmluZSBfUENNQ0lBMAlfUENNQ0lBICgwKQkvKiBQQ01DSUEgMCAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIF9QQ01DSUEwSU8JX1BDTUNJQUlPICgwKQkvKiBQQ01DSUEgMCBJL08gICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIF9QQ01DSUEwQXR0cglfUENNQ0lBQXR0ciAoMCkJLyogUENNQ0lBIDAgQXR0cmlidXRlICAgICAgICAgICAgICAqLwotI2RlZmluZSBfUENNQ0lBME1lbQlfUENNQ0lBTWVtICgwKQkvKiBQQ01DSUEgMCBNZW1vcnkgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIF9QQ01DSUEwCV9QQ01DSUEgKDApCS8qIFBDTUNJQSAwCQkJICAgKi8KKyNkZWZpbmUgX1BDTUNJQTBJTwlfUENNQ0lBSU8gKDApCS8qIFBDTUNJQSAwIEkvTwkJCSAgICovCisjZGVmaW5lIF9QQ01DSUEwQXR0cglfUENNQ0lBQXR0ciAoMCkgLyogUENNQ0lBIDAgQXR0cmlidXRlCQkgICAqLworI2RlZmluZSBfUENNQ0lBME1lbQlfUENNQ0lBTWVtICgwKQkvKiBQQ01DSUEgMCBNZW1vcnkJCSAgICovCiAKLSNkZWZpbmUgX1BDTUNJQTEJX1BDTUNJQSAoMSkJLyogUENNQ0lBIDEgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBfUENNQ0lBMUlPCV9QQ01DSUFJTyAoMSkJLyogUENNQ0lBIDEgSS9PICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBfUENNQ0lBMUF0dHIJX1BDTUNJQUF0dHIgKDEpCS8qIFBDTUNJQSAxIEF0dHJpYnV0ZSAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgX1BDTUNJQTFNZW0JX1BDTUNJQU1lbSAoMSkJLyogUENNQ0lBIDEgTWVtb3J5ICAgICAgICAgICAgICAgICAqLwotCisjZGVmaW5lIF9QQ01DSUExCV9QQ01DSUEgKDEpCS8qIFBDTUNJQSAxCQkJICAgKi8KKyNkZWZpbmUgX1BDTUNJQTFJTwlfUENNQ0lBSU8gKDEpCS8qIFBDTUNJQSAxIEkvTwkJCSAgICovCisjZGVmaW5lIF9QQ01DSUExQXR0cglfUENNQ0lBQXR0ciAoMSkgLyogUENNQ0lBIDEgQXR0cmlidXRlCQkgICAqLworI2RlZmluZSBfUENNQ0lBMU1lbQlfUENNQ0lBTWVtICgxKQkvKiBQQ01DSUEgMSBNZW1vcnkJCSAgICovCiAKIC8qCiAgKiBETUEgQ29udHJvbGxlcgogICovCi0KICNkZWZpbmUgRENTUjAJCV9fUkVHKDB4NDAwMDAwMDApICAvKiBETUEgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBmb3IgQ2hhbm5lbCAwICovCiAjZGVmaW5lIERDU1IxCQlfX1JFRygweDQwMDAwMDA0KSAgLyogRE1BIENvbnRyb2wgLyBTdGF0dXMgUmVnaXN0ZXIgZm9yIENoYW5uZWwgMSAqLwogI2RlZmluZSBEQ1NSMgkJX19SRUcoMHg0MDAwMDAwOCkgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIFJlZ2lzdGVyIGZvciBDaGFubmVsIDIgKi8KQEAgLTEwNyw2ICsxMDIsMTcgQEAKICNkZWZpbmUgRENTUl9SVU4JKDEgPDwgMzEpCS8qIFJ1biBCaXQgKHJlYWQgLyB3cml0ZSkgKi8KICNkZWZpbmUgRENTUl9OT0RFU0MJKDEgPDwgMzApCS8qIE5vLURlc2NyaXB0b3IgRmV0Y2ggKHJlYWQgLyB3cml0ZSkgKi8KICNkZWZpbmUgRENTUl9TVE9QSVJRRU4JKDEgPDwgMjkpCS8qIFN0b3AgSW50ZXJydXB0IEVuYWJsZSAocmVhZCAvIHdyaXRlKSAqLworCisjaWYgZGVmaW5lZChDT05GSUdfUFhBMjdYKQorI2RlZmluZSBEQ1NSX0VPUklSUUVOCSgxIDw8IDI4KQkvKiBFbmQgb2YgUmVjZWl2ZSBJbnRlcnJ1cHQgRW5hYmxlIChSL1cpICovCisjZGVmaW5lIERDU1JfRU9SSk1QRU4JKDEgPDwgMjcpCS8qIEp1bXAgdG8gbmV4dCBkZXNjcmlwdG9yIG9uIEVPUiAqLworI2RlZmluZSBEQ1NSX0VPUlNUT1BFTgkoMSA8PCAyNikJLyogU1RPUCBvbiBhbiBFT1IgKi8KKyNkZWZpbmUgRENTUl9TRVRDTVBTVAkoMSA8PCAyNSkJLyogU2V0IERlc2NyaXB0b3IgQ29tcGFyZSBTdGF0dXMgKi8KKyNkZWZpbmUgRENTUl9DTFJDTVBTVAkoMSA8PCAyNCkJLyogQ2xlYXIgRGVzY3JpcHRvciBDb21wYXJlIFN0YXR1cyAqLworI2RlZmluZSBEQ1NSX0NNUFNUCSgxIDw8IDEwKQkvKiBUaGUgRGVzY3JpcHRvciBDb21wYXJlIFN0YXR1cyAqLworI2RlZmluZSBEQ1NSX0VOUklOVFIJKDEgPDwgOSkJLyogVGhlIGVuZCBvZiBSZWNlaXZlICovCisjZW5kaWYKKwogI2RlZmluZSBEQ1NSX1JFUVBFTkQJKDEgPDwgOCkJLyogUmVxdWVzdCBQZW5kaW5nIChyZWFkLW9ubHkpICovCiAjZGVmaW5lIERDU1JfU1RPUFNUQVRFCSgxIDw8IDMpCS8qIFN0b3AgU3RhdGUgKHJlYWQtb25seSkgKi8KICNkZWZpbmUgRENTUl9FTkRJTlRSCSgxIDw8IDIpCS8qIEVuZCBJbnRlcnJ1cHQgKHJlYWQgLyB3cml0ZSkgKi8KQEAgLTE1Niw2ICsxNjIsMTAgQEAKICNkZWZpbmUgRFJDTVIzOAkJX19SRUcoMHg0MDAwMDE5OCkgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgUmVnaXN0ZXIgZm9yIFVTQiBlbmRwb2ludCAxNCBSZXF1ZXN0ICovCiAjZGVmaW5lIERSQ01SMzkJCV9fUkVHKDB4NDAwMDAxOUMpICAvKiBSZXNlcnZlZCAqLwogCisjZGVmaW5lIERSQ01SNjgJCSAgICAgICBfX1JFRygweDQwMDAxMTEwKSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgQ2FtZXJhIEZJRk8gMCBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SNjkJCSAgICAgICBfX1JFRygweDQwMDAxMTE0KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgQ2FtZXJhIEZJRk8gMSBSZXF1ZXN0ICovCisjZGVmaW5lIERSQ01SNzAJCSAgICAgICBfX1JFRygweDQwMDAxMTE4KSAgLyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCBSZWdpc3RlciBmb3IgQ2FtZXJhIEZJRk8gMiBSZXF1ZXN0ICovCisKICNkZWZpbmUgRFJDTVJSWFNBRFIJRFJDTVIyCiAjZGVmaW5lIERSQ01SVFhTQURSCURSQ01SMwogI2RlZmluZSBEUkNNUlJYQlRSQlIJRFJDTVI0CkBAIC0yNTIsMTEgKzI2MiwxMSBAQAogI2RlZmluZSBEREFEUl9ERVNDQUREUgkweGZmZmZmZmYwCS8qIEFkZHJlc3Mgb2YgbmV4dCBkZXNjcmlwdG9yIChtYXNrKSAqLwogI2RlZmluZSBEREFEUl9TVE9QCSgxIDw8IDApCS8qIFN0b3AgKHJlYWQgLyB3cml0ZSkgKi8KIAotI2RlZmluZSBEQ01EX0lOQ1NSQ0FERFIJKDEgPDwgMzEpCS8qIFNvdXJjZSBBZGRyZXNzIEluY3JlbWVudCBTZXR0aW5nLiAqLwotI2RlZmluZSBEQ01EX0lOQ1RSR0FERFIJKDEgPDwgMzApCS8qIFRhcmdldCBBZGRyZXNzIEluY3JlbWVudCBTZXR0aW5nLiAqLworI2RlZmluZSBEQ01EX0lOQ1NSQ0FERFIgKDEgPDwgMzEpCS8qIFNvdXJjZSBBZGRyZXNzIEluY3JlbWVudCBTZXR0aW5nLiAqLworI2RlZmluZSBEQ01EX0lOQ1RSR0FERFIgKDEgPDwgMzApCS8qIFRhcmdldCBBZGRyZXNzIEluY3JlbWVudCBTZXR0aW5nLiAqLwogI2RlZmluZSBEQ01EX0ZMT1dTUkMJKDEgPDwgMjkpCS8qIEZsb3cgQ29udHJvbCBieSB0aGUgc291cmNlLiAqLwogI2RlZmluZSBEQ01EX0ZMT1dUUkcJKDEgPDwgMjgpCS8qIEZsb3cgQ29udHJvbCBieSB0aGUgdGFyZ2V0LiAqLwotI2RlZmluZSBEQ01EX1NUQVJUSVJRRU4JKDEgPDwgMjIpCS8qIFN0YXJ0IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgRENNRF9TVEFSVElSUUVOICgxIDw8IDIyKQkvKiBTdGFydCBJbnRlcnJ1cHQgRW5hYmxlICovCiAjZGVmaW5lIERDTURfRU5ESVJRRU4JKDEgPDwgMjEpCS8qIEVuZCBJbnRlcnJ1cHQgRW5hYmxlICovCiAjZGVmaW5lIERDTURfRU5ESUFOCSgxIDw8IDE4KQkvKiBEZXZpY2UgRW5kaWFuLW5lc3MuICovCiAjZGVmaW5lIERDTURfQlVSU1Q4CSgxIDw8IDE2KQkvKiA4IGJ5dGUgYnVyc3QgKi8KQEAgLTI3MiwxMSArMjgyLDkgQEAKICNkZWZpbmUgRENNRF9SWE1DRFIJKERDTURfSU5DVFJHQUREUnxEQ01EX0ZMT1dTUkN8RENNRF9CVVJTVDMyfERDTURfV0lEVEg0KQogI2RlZmluZSBEQ01EX1RYUENEUgkoRENNRF9JTkNTUkNBRERSfERDTURfRkxPV1RSR3xEQ01EX0JVUlNUMzJ8RENNRF9XSURUSDQpCiAKLQogLyoKICAqIFVBUlRzCiAgKi8KLQogLyogRnVsbCBGdW5jdGlvbiBVQVJUIChGRlVBUlQpICovCiAjZGVmaW5lIEZGVUFSVAkJRkZSQlIKICNkZWZpbmUgRkZSQlIJCV9fUkVHKDB4NDAxMDAwMDApICAvKiBSZWNlaXZlIEJ1ZmZlciBSZWdpc3RlciAocmVhZCBvbmx5KSAqLwpAQCAtNDE3LDE5ICs0MjUsMjQgQEAKIC8qCiAgKiBJMkMgcmVnaXN0ZXJzCiAgKi8KLQogI2RlZmluZSBJQk1SCQlfX1JFRygweDQwMzAxNjgwKSAgLyogSTJDIEJ1cyBNb25pdG9yIFJlZ2lzdGVyIC0gSUJNUiAqLwogI2RlZmluZSBJREJSCQlfX1JFRygweDQwMzAxNjg4KSAgLyogSTJDIERhdGEgQnVmZmVyIFJlZ2lzdGVyIC0gSURCUiAqLwogI2RlZmluZSBJQ1IJCV9fUkVHKDB4NDAzMDE2OTApICAvKiBJMkMgQ29udHJvbCBSZWdpc3RlciAtIElDUiAqLwogI2RlZmluZSBJU1IJCV9fUkVHKDB4NDAzMDE2OTgpICAvKiBJMkMgU3RhdHVzIFJlZ2lzdGVyIC0gSVNSICovCiAjZGVmaW5lIElTQVIJCV9fUkVHKDB4NDAzMDE2QTApICAvKiBJMkMgU2xhdmUgQWRkcmVzcyBSZWdpc3RlciAtIElTQVIgKi8KIAorI2RlZmluZSBQV1JJQk1SCQlfX1JFRygweDQwZjAwMTgwKSAgLyogUG93ZXIgSTJDIEJ1cyBNb25pdG9yIFJlZ2lzdGVyLUlCTVIgKi8KKyNkZWZpbmUgUFdSSURCUgkJX19SRUcoMHg0MGYwMDE4OCkgIC8qIFBvd2VyIEkyQyBEYXRhIEJ1ZmZlciBSZWdpc3Rlci1JREJSICovCisjZGVmaW5lIFBXUklDUgkJX19SRUcoMHg0MGYwMDE5MCkgIC8qIFBvd2VyIEkyQyBDb250cm9sIFJlZ2lzdGVyIC0gSUNSICovCisjZGVmaW5lIFBXUklTUgkJX19SRUcoMHg0MGYwMDE5OCkgIC8qIFBvd2VyIEkyQyBTdGF0dXMgUmVnaXN0ZXIgLSBJU1IgKi8KKyNkZWZpbmUgUFdSSVNBUgkJX19SRUcoMHg0MGYwMDFBMCkgIC8qIFBvd2VyIEkyQyBTbGF2ZSBBZGRyZXNzIFJlZ2lzdGVyLUlTQVIgKi8KKwogLyogLS0tLS0gQ29udHJvbCByZWdpc3RlciBiaXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBJQ1JfU1RBUlQJMHgxCQkvKiBzdGFydCBiaXQgKi8KICNkZWZpbmUgSUNSX1NUT1AJMHgyCQkvKiBzdG9wIGJpdCAqLwogI2RlZmluZSBJQ1JfQUNLTkFLCTB4NAkJLyogc2VuZCBBQ0soMCkgb3IgTkFLKDEpICovCi0jZGVmaW5lIElDUl9UQgkJMHg4IAkJLyogdHJhbnNmZXIgYnl0ZSBiaXQgKi8KKyNkZWZpbmUgSUNSX1RCCQkweDgJCS8qIHRyYW5zZmVyIGJ5dGUgYml0ICovCiAjZGVmaW5lIElDUl9NQQkJMHgxMAkJLyogbWFzdGVyIGFib3J0ICovCiAjZGVmaW5lIElDUl9TQ0xFCTB4MjAJCS8qIG1hc3RlciBjbG9jayBlbmFibGUgKi8KICNkZWZpbmUgSUNSX0lVRQkJMHg0MAkJLyogdW5pdCBlbmFibGUgKi8KQEAgLTQzOCwzMyArNDUxLDMxIEBACiAjZGVmaW5lIElDUl9JUkZJRQkweDIwMAkJLyogZW5hYmxlIHJ4IGludGVycnVwdHMgKi8KICNkZWZpbmUgSUNSX0JFSUUJMHg0MDAJCS8qIGVuYWJsZSBidXMgZXJyb3IgaW50cyAqLwogI2RlZmluZSBJQ1JfU1NESUUJMHg4MDAJCS8qIHNsYXZlIFNUT1AgZGV0ZWN0ZWQgaW50IGVuYWJsZSAqLwotI2RlZmluZSBJQ1JfQUxESUUJMHgxMDAwICAJLyogZW5hYmxlIGFyYml0cmF0aW9uIGludGVycnVwdCAqLworI2RlZmluZSBJQ1JfQUxESUUJMHgxMDAwCQkvKiBlbmFibGUgYXJiaXRyYXRpb24gaW50ZXJydXB0ICovCiAjZGVmaW5lIElDUl9TQURJRQkweDIwMDAJCS8qIHNsYXZlIGFkZHJlc3MgZGV0ZWN0ZWQgaW50IGVuYWJsZSAqLwogI2RlZmluZSBJQ1JfVVIJCTB4NDAwMAkJLyogdW5pdCByZXNldCAqLwogI2RlZmluZSBJQ1JfRk0JCTB4ODAwMAkJLyogRmFzdCBNb2RlICovCiAKIC8qIC0tLS0tIFN0YXR1cyByZWdpc3RlciBiaXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNkZWZpbmUgSVNSX1JXTSAgICAgICAgIDB4MQkJLyogcmVhZC93cml0ZSBtb2RlICovCi0jZGVmaW5lIElTUl9BQ0tOQUsgICAgICAweDIJCS8qIGFjay9uYWsgc3RhdHVzICovCi0jZGVmaW5lIElTUl9VQiAgICAgICAgICAweDQJCS8qIHVuaXQgYnVzeSAqLwotI2RlZmluZSBJU1JfSUJCICAgICAgICAgMHg4CQkvKiBidXMgYnVzeSAqLwotI2RlZmluZSBJU1JfU1NEICAgICAgICAgMHgxMAkJLyogc2xhdmUgc3RvcCBkZXRlY3RlZCAqLwotI2RlZmluZSBJU1JfQUxEICAgICAgICAgMHgyMAkJLyogYXJiaXRyYXRpb24gbG9zcyBkZXRlY3RlZCAqLwotI2RlZmluZSBJU1JfSVRFICAgICAgICAgMHg0MCAgICAgICAgICAgIC8qIHR4IGJ1ZmZlciBlbXB0eSAqLwotI2RlZmluZSBJU1JfSVJGICAgICAgICAgMHg4MCAgICAgICAgICAgIC8qIHJ4IGJ1ZmZlciBmdWxsICovCi0jZGVmaW5lIElTUl9HQ0FEICAgICAgICAweDEwMAkJLyogZ2VuZXJhbCBjYWxsIGFkZHJlc3MgZGV0ZWN0ZWQgKi8KLSNkZWZpbmUgSVNSX1NBRCAgICAgICAgIDB4MjAwCQkvKiBzbGF2ZSBhZGRyZXNzIGRldGVjdGVkICovCi0jZGVmaW5lIElTUl9CRUQgICAgICAgICAweDQwMCAgICAgICAgICAgLyogYnVzIGVycm9yIG5vIEFDSy9OQUsgKi8KKyNkZWZpbmUgSVNSX1JXTQkJMHgxCQkvKiByZWFkL3dyaXRlIG1vZGUgKi8KKyNkZWZpbmUgSVNSX0FDS05BSwkweDIJCS8qIGFjay9uYWsgc3RhdHVzICovCisjZGVmaW5lIElTUl9VQgkJMHg0CQkvKiB1bml0IGJ1c3kgKi8KKyNkZWZpbmUgSVNSX0lCQgkJMHg4CQkvKiBidXMgYnVzeSAqLworI2RlZmluZSBJU1JfU1NECQkweDEwCQkvKiBzbGF2ZSBzdG9wIGRldGVjdGVkICovCisjZGVmaW5lIElTUl9BTEQJCTB4MjAJCS8qIGFyYml0cmF0aW9uIGxvc3MgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgSVNSX0lURQkJMHg0MAkJLyogdHggYnVmZmVyIGVtcHR5ICovCisjZGVmaW5lIElTUl9JUkYJCTB4ODAJCS8qIHJ4IGJ1ZmZlciBmdWxsICovCisjZGVmaW5lIElTUl9HQ0FECTB4MTAwCQkvKiBnZW5lcmFsIGNhbGwgYWRkcmVzcyBkZXRlY3RlZCAqLworI2RlZmluZSBJU1JfU0FECQkweDIwMAkJLyogc2xhdmUgYWRkcmVzcyBkZXRlY3RlZCAqLworI2RlZmluZSBJU1JfQkVECQkweDQwMAkJLyogYnVzIGVycm9yIG5vIEFDSy9OQUsgKi8KIAogLyoKICAqIFNlcmlhbCBBdWRpbyBDb250cm9sbGVyCiAgKi8KLQotCiAvKiBGSVhNRSB0aGUgYXVkaW8gZGVmaW5lcyBjb2xsaWRlIHcvIHRoZSBTQTExMTEgZGVmaW5lcy4gIEkgZG9uJ3QgbGlrZSB0aGVzZQotICogc2hvcnQgZGVmaW5lcyBiZWNhdXNlIHRoZXJlIGlzIHRvbyBtdWNoIGNoYW5jZSBvZiBuYW1lc3BhY2UgY29sbGlzaW9uICovCi0KKyAqIHNob3J0IGRlZmluZXMgYmVjYXVzZSB0aGVyZSBpcyB0b28gbXVjaCBjaGFuY2Ugb2YgbmFtZXNwYWNlIGNvbGxpc2lvbgorICovCiAvKiNkZWZpbmUgU0FDUjAJCV9fUkVHKDB4NDA0MDAwMDApICAvICBHbG9iYWwgQ29udHJvbCBSZWdpc3RlciAqLwogLyojZGVmaW5lIFNBQ1IxCQlfX1JFRygweDQwNDAwMDA0KSAgLyAgU2VyaWFsIEF1ZGlvIEkgMiBTL01TQi1KdXN0aWZpZWQgQ29udHJvbCBSZWdpc3RlciAqLwogLyojZGVmaW5lIFNBU1IwCQlfX1JFRygweDQwNDAwMDBDKSAgLyAgU2VyaWFsIEF1ZGlvIEkgMiBTL01TQi1KdXN0aWZpZWQgSW50ZXJmYWNlIGFuZCBGSUZPIFN0YXR1cyBSZWdpc3RlciAqLwpAQCAtNDc3LDcgKzQ4OCw2IEBACiAvKgogICogQUM5NyBDb250cm9sbGVyIHJlZ2lzdGVycwogICovCi0KICNkZWZpbmUgUE9DUgkJX19SRUcoMHg0MDUwMDAwMCkgIC8qIFBDTSBPdXQgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBQT0NSX0ZFSUUJKDEgPDwgMykJLyogRklGTyBFcnJvciBJbnRlcnJ1cHQgRW5hYmxlICovCiAKQEAgLTU1MSw3ICs1NjEsNiBAQAogI2RlZmluZSBQTUNfUkVHX0JBU0UJX19SRUcoMHg0MDUwMDQwMCkgIC8qIFByaW1hcnkgTW9kZW0gQ29kZWMgKi8KICNkZWZpbmUgU01DX1JFR19CQVNFCV9fUkVHKDB4NDA1MDA1MDApICAvKiBTZWNvbmRhcnkgTW9kZW0gQ29kZWMgKi8KIAotCiAvKgogICogVVNCIERldmljZSBDb250cm9sbGVyCiAgKi8KQEAgLTcxMCwxMSArNzE5LDYzIEBACiAjZGVmaW5lIFVTSVIxX0lSMTQJKDEgPDwgNikJLyogSW50ZXJydXAgcmVxdWVzdCBlcCAxNCAqLwogI2RlZmluZSBVU0lSMV9JUjE1CSgxIDw8IDcpCS8qIEludGVycnVwIHJlcXVlc3QgZXAgMTUgKi8KIAorI2lmIGRlZmluZWQoQ09ORklHX1BYQTI3WCkKKy8qCisgKiBVU0IgSG9zdCBDb250cm9sbGVyCisgKi8KKyNkZWZpbmUgVUhDUkVWCQlfX1JFRygweDRDMDAwMDAwKQorI2RlZmluZSBVSENIQ09OCQlfX1JFRygweDRDMDAwMDA0KQorI2RlZmluZSBVSENDT01TCQlfX1JFRygweDRDMDAwMDA4KQorI2RlZmluZSBVSENJTlRTCQlfX1JFRygweDRDMDAwMDBDKQorI2RlZmluZSBVSENJTlRFCQlfX1JFRygweDRDMDAwMDEwKQorI2RlZmluZSBVSENJTlRECQlfX1JFRygweDRDMDAwMDE0KQorI2RlZmluZSBVSENIQ0NBCQlfX1JFRygweDRDMDAwMDE4KQorI2RlZmluZSBVSENQQ0VECQlfX1JFRygweDRDMDAwMDFDKQorI2RlZmluZSBVSENDSEVECQlfX1JFRygweDRDMDAwMDIwKQorI2RlZmluZSBVSENDQ0VECQlfX1JFRygweDRDMDAwMDI0KQorI2RlZmluZSBVSENCSEVECQlfX1JFRygweDRDMDAwMDI4KQorI2RlZmluZSBVSENCQ0VECQlfX1JFRygweDRDMDAwMDJDKQorI2RlZmluZSBVSENESEVBRAlfX1JFRygweDRDMDAwMDMwKQorI2RlZmluZSBVSENGTUkJCV9fUkVHKDB4NEMwMDAwMzQpCisjZGVmaW5lIFVIQ0ZNUgkJX19SRUcoMHg0QzAwMDAzOCkKKyNkZWZpbmUgVUhDRk1OCQlfX1JFRygweDRDMDAwMDNDKQorI2RlZmluZSBVSENQRVJTCQlfX1JFRygweDRDMDAwMDQwKQorI2RlZmluZSBVSENMU1QJCV9fUkVHKDB4NEMwMDAwNDQpCisjZGVmaW5lIFVIQ1JIREEJCV9fUkVHKDB4NEMwMDAwNDgpCisjZGVmaW5lIFVIQ1JIREIJCV9fUkVHKDB4NEMwMDAwNEMpCisjZGVmaW5lIFVIQ1JIUwkJX19SRUcoMHg0QzAwMDA1MCkKKyNkZWZpbmUgVUhDUkhQUzEJX19SRUcoMHg0QzAwMDA1NCkKKyNkZWZpbmUgVUhDUkhQUzIJX19SRUcoMHg0QzAwMDA1OCkKKyNkZWZpbmUgVUhDUkhQUzMJX19SRUcoMHg0QzAwMDA1QykKKyNkZWZpbmUgVUhDU1RBVAkJX19SRUcoMHg0QzAwMDA2MCkKKyNkZWZpbmUgVUhDSFIJCV9fUkVHKDB4NEMwMDAwNjQpCisjZGVmaW5lIFVIQ0hJRQkJX19SRUcoMHg0QzAwMDA2OCkKKyNkZWZpbmUgVUhDSElUCQlfX1JFRygweDRDMDAwMDZDKQorCisjZGVmaW5lIFVIQ0hSX0ZTQklSCSgxPDwwKQorI2RlZmluZSBVSENIUl9GSFIJKDE8PDEpCisjZGVmaW5lIFVIQ0hSX0NHUgkoMTw8MikKKyNkZWZpbmUgVUhDSFJfU1NEQwkoMTw8MykKKyNkZWZpbmUgVUhDSFJfVUlUCSgxPDw0KQorI2RlZmluZSBVSENIUl9TU0UJKDE8PDUpCisjZGVmaW5lIFVIQ0hSX1BTUEwJKDE8PDYpCisjZGVmaW5lIFVIQ0hSX1BDUEwJKDE8PDcpCisjZGVmaW5lIFVIQ0hSX1NTRVAwCSgxPDw5KQorI2RlZmluZSBVSENIUl9TU0VQMQkoMTw8MTApCisjZGVmaW5lIFVIQ0hSX1NTRVAyCSgxPDwxMSkKKworI2RlZmluZSBVSENISUVfVVBSSUUJKDE8PDEzKQorI2RlZmluZSBVSENISUVfVVBTMklFCSgxPDwxMikKKyNkZWZpbmUgVUhDSElFX1VQUzFJRQkoMTw8MTEpCisjZGVmaW5lIFVIQ0hJRV9UQUlFCSgxPDwxMCkKKyNkZWZpbmUgVUhDSElFX0hCQUlFCSgxPDw4KQorI2RlZmluZSBVSENISUVfUldJRQkoMTw8NykKKworI2VuZGlmCiAKIC8qCiAgKiBGYXN0IEluZnJhcmVkIENvbW11bmljYXRpb24gUG9ydAogICovCi0KICNkZWZpbmUgSUNDUjAJCV9fUkVHKDB4NDA4MDAwMDApICAvKiBJQ1AgQ29udHJvbCBSZWdpc3RlciAwICovCiAjZGVmaW5lIElDQ1IxCQlfX1JFRygweDQwODAwMDA0KSAgLyogSUNQIENvbnRyb2wgUmVnaXN0ZXIgMSAqLwogI2RlZmluZSBJQ0NSMgkJX19SRUcoMHg0MDgwMDAwOCkgIC8qIElDUCBDb250cm9sIFJlZ2lzdGVyIDIgKi8KQEAgLTcyMiwyNiArNzgzLDM2IEBACiAjZGVmaW5lIElDU1IwCQlfX1JFRygweDQwODAwMDE0KSAgLyogSUNQIFN0YXR1cyBSZWdpc3RlciAwICovCiAjZGVmaW5lIElDU1IxCQlfX1JFRygweDQwODAwMDE4KSAgLyogSUNQIFN0YXR1cyBSZWdpc3RlciAxICovCiAKLQogLyoKICAqIFJlYWwgVGltZSBDbG9jawogICovCi0KICNkZWZpbmUgUkNOUgkJX19SRUcoMHg0MDkwMDAwMCkgIC8qIFJUQyBDb3VudCBSZWdpc3RlciAqLwogI2RlZmluZSBSVEFSCQlfX1JFRygweDQwOTAwMDA0KSAgLyogUlRDIEFsYXJtIFJlZ2lzdGVyICovCiAjZGVmaW5lIFJUU1IJCV9fUkVHKDB4NDA5MDAwMDgpICAvKiBSVEMgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIFJUVFIJCV9fUkVHKDB4NDA5MDAwMEMpICAvKiBSVEMgVGltZXIgVHJpbSBSZWdpc3RlciAqLworI2RlZmluZSBSREFSMQkgICBfX1JFRygweDQwOTAwMDE4KSAgLyogV3Jpc3R3YXRjaCBEYXkgQWxhcm0gUmVnIDEgKi8KKyNkZWZpbmUgUkRBUjIJICAgX19SRUcoMHg0MDkwMDAyMCkgIC8qIFdyaXN0d2F0Y2ggRGF5IEFsYXJtIFJlZyAyICovCisjZGVmaW5lIFJZQVIxCSAgIF9fUkVHKDB4NDA5MDAwMUMpICAvKiBXcmlzdHdhdGNoIFllYXIgQWxhcm0gUmVnIDEgKi8KKyNkZWZpbmUgUllBUjIJICAgX19SRUcoMHg0MDkwMDAyNCkgIC8qIFdyaXN0d2F0Y2ggWWVhciBBbGFybSBSZWcgMiAqLworI2RlZmluZSBTV0FSMQkgICBfX1JFRygweDQwOTAwMDJDKSAgLyogU3RvcHdhdGNoIEFsYXJtIFJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgU1dBUjIJICAgX19SRUcoMHg0MDkwMDAzMCkgIC8qIFN0b3B3YXRjaCBBbGFybSBSZWdpc3RlciAyICovCisjZGVmaW5lIFBJQVIJICAgX19SRUcoMHg0MDkwMDAzOCkgIC8qIFBlcmlvZGljIEludGVycnVwdCBBbGFybSBSZWdpc3RlciAqLworI2RlZmluZSBSRENSCSAgIF9fUkVHKDB4NDA5MDAwMTApICAvKiBSVEMgRGF5IENvdW50IFJlZ2lzdGVyLiAqLworI2RlZmluZSBSWUNSCSAgIF9fUkVHKDB4NDA5MDAwMTQpICAvKiBSVEMgWWVhciBDb3VudCBSZWdpc3Rlci4gKi8KKyNkZWZpbmUgU1dDUgkgICBfX1JFRygweDQwOTAwMDI4KSAgLyogU3RvcHdhdGNoIENvdW50IFJlZ2lzdGVyICovCisjZGVmaW5lIFJUQ1BJQ1IJICAgX19SRUcoMHg0MDkwMDAzNCkgIC8qIFBlcmlvZGljIEludGVycnVwdCBDb3VudGVyIFJlZ2lzdGVyICovCiAKKyNkZWZpbmUgUlRTUl9QSUNFICAoMSA8PCAxNSkgICAvKiBQZXJpZG9jIGludGVycnVwdCBjb3VudCBlbmFibGUgKi8KKyNkZWZpbmUgUlRTUl9QSUFMRSAoMSA8PCAxNCkgICAvKiBQZXJpZG9jIGludGVycnVwdCBBbGFybSBlbmFibGUgKi8KKyNkZWZpbmUgUlRTUl9QSUFMICAoMSA8PCAxMykgICAvKiBQZXJpZG9jICBpbnRlcnJ1cHQgQWxhcm0gc3RhdHVzICovCiAjZGVmaW5lIFJUU1JfSFpFCSgxIDw8IDMpCS8qIEhaIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgUlRTUl9BTEUJKDEgPDwgMikJLyogUlRDIGFsYXJtIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgUlRTUl9IWgkJKDEgPDwgMSkJLyogSFogcmlzaW5nLWVkZ2UgZGV0ZWN0ZWQgKi8KICNkZWZpbmUgUlRTUl9BTAkJKDEgPDwgMCkJLyogUlRDIGFsYXJtIGRldGVjdGVkICovCiAKLQogLyoKICAqIE9TIFRpbWVyICYgTWF0Y2ggUmVnaXN0ZXJzCiAgKi8KLQogI2RlZmluZSBPU01SMAkJX19SRUcoMHg0MEEwMDAwMCkgIC8qICovCiAjZGVmaW5lIE9TTVIxCQlfX1JFRygweDQwQTAwMDA0KSAgLyogKi8KICNkZWZpbmUgT1NNUjIJCV9fUkVHKDB4NDBBMDAwMDgpICAvKiAqLwpAQCAtNzYzLDExICs4MzQsOSBAQAogI2RlZmluZSBPSUVSX0UxCQkoMSA8PCAxKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMSAqLwogI2RlZmluZSBPSUVSX0UwCQkoMSA8PCAwKQkvKiBJbnRlcnJ1cHQgZW5hYmxlIGNoYW5uZWwgMCAqLwogCi0KIC8qCiAgKiBQdWxzZSBXaWR0aCBNb2R1bGF0b3IKICAqLwotCiAjZGVmaW5lIFBXTV9DVFJMMAlfX1JFRygweDQwQjAwMDAwKSAgLyogUFdNIDAgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBQV01fUFdEVVRZMAlfX1JFRygweDQwQjAwMDA0KSAgLyogUFdNIDAgRHV0eSBDeWNsZSBSZWdpc3RlciAqLwogI2RlZmluZSBQV01fUEVSVkFMMAlfX1JFRygweDQwQjAwMDA4KSAgLyogUFdNIDAgUGVyaW9kIENvbnRyb2wgUmVnaXN0ZXIgKi8KQEAgLTc3NiwxMSArODQ1LDkgQEAKICNkZWZpbmUgUFdNX1BXRFVUWTEJX19SRUcoMHg0MEMwMDAwNCkgIC8qIFBXTSAxIER1dHkgQ3ljbGUgUmVnaXN0ZXIgKi8KICNkZWZpbmUgUFdNX1BFUlZBTDEJX19SRUcoMHg0MEMwMDAwOCkgIC8qIFBXTSAxIFBlcmlvZCBDb250cm9sIFJlZ2lzdGVyICovCiAKLQogLyoKICAqIEludGVycnVwdCBDb250cm9sbGVyCiAgKi8KLQogI2RlZmluZSBJQ0lQCQlfX1JFRygweDQwRDAwMDAwKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgSVJRIFBlbmRpbmcgUmVnaXN0ZXIgKi8KICNkZWZpbmUgSUNNUgkJX19SRUcoMHg0MEQwMDAwNCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIE1hc2sgUmVnaXN0ZXIgKi8KICNkZWZpbmUgSUNMUgkJX19SRUcoMHg0MEQwMDAwOCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIExldmVsIFJlZ2lzdGVyICovCkBAIC03ODgsMTEgKzg1NSw5IEBACiAjZGVmaW5lIElDUFIJCV9fUkVHKDB4NDBEMDAwMTApICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBQZW5kaW5nIFJlZ2lzdGVyICovCiAjZGVmaW5lIElDQ1IJCV9fUkVHKDB4NDBEMDAwMTQpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBDb250cm9sIFJlZ2lzdGVyICovCiAKLQogLyoKICAqIEdlbmVyYWwgUHVycG9zZSBJL08KICAqLwotCiAjZGVmaW5lIEdQTFIwCQlfX1JFRygweDQwRTAwMDAwKSAgLyogR1BJTyBQaW4tTGV2ZWwgUmVnaXN0ZXIgR1BJTzwzMTowPiAqLwogI2RlZmluZSBHUExSMQkJX19SRUcoMHg0MEUwMDAwNCkgIC8qIEdQSU8gUGluLUxldmVsIFJlZ2lzdGVyIEdQSU88NjM6MzI+ICovCiAjZGVmaW5lIEdQTFIyCQlfX1JFRygweDQwRTAwMDA4KSAgLyogR1BJTyBQaW4tTGV2ZWwgUmVnaXN0ZXIgR1BJTzw4MDo2ND4gKi8KQEAgLTgzMSw2ICs4OTYsMzcgQEAKIC8qIE1vcmUgaGFuZHkgbWFjcm9zLiAgVGhlIGFyZ3VtZW50IGlzIGEgbGl0ZXJhbCBHUElPIG51bWJlci4gKi8KIAogI2RlZmluZSBHUElPX2JpdCh4KQkoMSA8PCAoKHgpICYgMHgxZikpCisKKyNpZmRlZiBDT05GSUdfUFhBMjdYCisKKy8qIEludGVycnVwdCBDb250cm9sbGVyICovCisKKyNkZWZpbmUgSUNJUDIJCV9fUkVHKDB4NDBEMDAwOUMpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBJUlEgUGVuZGluZyBSZWdpc3RlciAyICovCisjZGVmaW5lIElDTVIyCQlfX1JFRygweDQwRDAwMEEwKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTWFzayBSZWdpc3RlciAyICovCisjZGVmaW5lIElDTFIyCQlfX1JFRygweDQwRDAwMEE0KSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTGV2ZWwgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ0ZQMgkJX19SRUcoMHg0MEQwMDBBOCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIEZJUSBQZW5kaW5nIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgSUNQUjIJCV9fUkVHKDB4NDBEMDAwQUMpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBQZW5kaW5nIFJlZ2lzdGVyIDIgKi8KKworI2RlZmluZSBfR1BMUih4KQlfX1JFRzIoMHg0MEUwMDAwMCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIF9HUERSKHgpCV9fUkVHMigweDQwRTAwMDBDLCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgX0dQU1IoeCkJX19SRUcyKDB4NDBFMDAwMTgsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBfR1BDUih4KQlfX1JFRzIoMHg0MEUwMDAyNCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIF9HUkVSKHgpCV9fUkVHMigweDQwRTAwMDMwLCAoKHgpICYgMHg2MCkgPj4gMykKKyNkZWZpbmUgX0dGRVIoeCkJX19SRUcyKDB4NDBFMDAwM0MsICgoeCkgJiAweDYwKSA+PiAzKQorI2RlZmluZSBfR0VEUih4KQlfX1JFRzIoMHg0MEUwMDA0OCwgKCh4KSAmIDB4NjApID4+IDMpCisjZGVmaW5lIF9HQUZSKHgpCV9fUkVHMigweDQwRTAwMDU0LCAoKHgpICYgMHg3MCkgPj4gMikKKworI2RlZmluZSBHUExSKHgpCQkoKCgoeCkgJiAweDdmKSA8IDk2KSA/IF9HUExSKHgpIDogR1BMUjMpCisjZGVmaW5lIEdQRFIoeCkJCSgoKCh4KSAmIDB4N2YpIDwgOTYpID8gX0dQRFIoeCkgOiBHUERSMykKKyNkZWZpbmUgR1BTUih4KQkJKCgoKHgpICYgMHg3ZikgPCA5NikgPyBfR1BTUih4KSA6IEdQU1IzKQorI2RlZmluZSBHUENSKHgpCQkoKCgoeCkgJiAweDdmKSA8IDk2KSA/IF9HUENSKHgpIDogR1BDUjMpCisjZGVmaW5lIEdSRVIoeCkJCSgoKCh4KSAmIDB4N2YpIDwgOTYpID8gX0dSRVIoeCkgOiBHUkVSMykKKyNkZWZpbmUgR0ZFUih4KQkJKCgoKHgpICYgMHg3ZikgPCA5NikgPyBfR0ZFUih4KSA6IEdGRVIzKQorI2RlZmluZSBHRURSKHgpCQkoKCgoeCkgJiAweDdmKSA8IDk2KSA/IF9HRURSKHgpIDogR0VEUjMpCisjZGVmaW5lIEdBRlIoeCkJCSgoKCh4KSAmIDB4N2YpIDwgOTYpID8gX0dBRlIoeCkgOiBcCisJCQkgKCgoKHgpICYgMHg3ZikgPCAxMTIpID8gR0FGUjNfTCA6IEdBRlIzX1UpKQorI2Vsc2UKKwogI2RlZmluZSBHUExSKHgpCQlfX1JFRzIoMHg0MEUwMDAwMCwgKCh4KSAmIDB4NjApID4+IDMpCiAjZGVmaW5lIEdQRFIoeCkJCV9fUkVHMigweDQwRTAwMDBDLCAoKHgpICYgMHg2MCkgPj4gMykKICNkZWZpbmUgR1BTUih4KQkJX19SRUcyKDB4NDBFMDAwMTgsICgoeCkgJiAweDYwKSA+PiAzKQpAQCAtODQwLDYgKzkzNiw4IEBACiAjZGVmaW5lIEdFRFIoeCkJCV9fUkVHMigweDQwRTAwMDQ4LCAoKHgpICYgMHg2MCkgPj4gMykKICNkZWZpbmUgR0FGUih4KQkJX19SRUcyKDB4NDBFMDAwNTQsICgoeCkgJiAweDcwKSA+PiAyKQogCisjZW5kaWYKKwogLyogR1BJTyBhbHRlcm5hdGUgZnVuY3Rpb24gYXNzaWdubWVudHMgKi8KIAogI2RlZmluZSBHUElPMV9SU1QJCTEJLyogcmVzZXQgKi8KQEAgLTk2OCwxMCArMTA2NiwxMCBAQAogI2RlZmluZSBHUElPMjdfU0VYVENMS19NRAkoMjcgfCBHUElPX0FMVF9GTl8xX0lOKQogI2RlZmluZSBHUElPMjhfQklUQ0xLX0FDOTdfTUQJKDI4IHwgR1BJT19BTFRfRk5fMV9JTikKICNkZWZpbmUgR1BJTzI4X0JJVENMS19JMlNfTUQJKDI4IHwgR1BJT19BTFRfRk5fMl9JTikKLSNkZWZpbmUgR1BJTzI5X1NEQVRBX0lOX0FDOTdfTUQJKDI5IHwgR1BJT19BTFRfRk5fMV9JTikKKyNkZWZpbmUgR1BJTzI5X1NEQVRBX0lOX0FDOTdfTUQgKDI5IHwgR1BJT19BTFRfRk5fMV9JTikKICNkZWZpbmUgR1BJTzI5X1NEQVRBX0lOX0kyU19NRAkoMjkgfCBHUElPX0FMVF9GTl8yX0lOKQogI2RlZmluZSBHUElPMzBfU0RBVEFfT1VUX0FDOTdfTUQJKDMwIHwgR1BJT19BTFRfRk5fMl9PVVQpCi0jZGVmaW5lIEdQSU8zMF9TREFUQV9PVVRfSTJTX01ECSgzMCB8IEdQSU9fQUxUX0ZOXzFfT1VUKQorI2RlZmluZSBHUElPMzBfU0RBVEFfT1VUX0kyU19NRCAoMzAgfCBHUElPX0FMVF9GTl8xX09VVCkKICNkZWZpbmUgR1BJTzMxX1NZTkNfQUM5N19NRAkoMzEgfCBHUElPX0FMVF9GTl8yX09VVCkKICNkZWZpbmUgR1BJTzMxX1NZTkNfSTJTX01ECSgzMSB8IEdQSU9fQUxUX0ZOXzFfT1VUKQogI2RlZmluZSBHUElPMzJfU0RBVEFfSU4xX0FDOTdfTUQJKDMyIHwgR1BJT19BTFRfRk5fMV9JTikKQEAgLTEwMzgsMTEgKzExMzYsMTIgQEAKICNkZWZpbmUgR1BJTzc5X25DU18zX01ECQkoNzkgfCBHUElPX0FMVF9GTl8yX09VVCkKICNkZWZpbmUgR1BJTzgwX25DU180X01ECQkoODAgfCBHUElPX0FMVF9GTl8yX09VVCkKIAorI2RlZmluZSBHUElPMTE3X1NDTAkgICAgICgxMTcgfCBHUElPX0FMVF9GTl8xX09VVCkKKyNkZWZpbmUgR1BJTzExOF9TREEJICAgICAoMTE4IHwgR1BJT19BTFRfRk5fMV9PVVQpCiAKIC8qCiAgKiBQb3dlciBNYW5hZ2VyCiAgKi8KLQogI2RlZmluZSBQTUNSCQlfX1JFRygweDQwRjAwMDAwKSAgLyogUG93ZXIgTWFuYWdlciBDb250cm9sIFJlZ2lzdGVyICovCiAjZGVmaW5lIFBTU1IJCV9fUkVHKDB4NDBGMDAwMDQpICAvKiBQb3dlciBNYW5hZ2VyIFNsZWVwIFN0YXR1cyBSZWdpc3RlciAqLwogI2RlZmluZSBQU1BSCQlfX1JFRygweDQwRjAwMDA4KSAgLyogUG93ZXIgTWFuYWdlciBTY3JhdGNoIFBhZCBSZWdpc3RlciAqLwpAQCAtMTA1NCw4ICsxMTUzLDYyIEBACiAjZGVmaW5lIFBHU1IwCQlfX1JFRygweDQwRjAwMDIwKSAgLyogUG93ZXIgTWFuYWdlciBHUElPIFNsZWVwIFN0YXRlIFJlZ2lzdGVyIGZvciBHUFszMS0wXSAqLwogI2RlZmluZSBQR1NSMQkJX19SRUcoMHg0MEYwMDAyNCkgIC8qIFBvd2VyIE1hbmFnZXIgR1BJTyBTbGVlcCBTdGF0ZSBSZWdpc3RlciBmb3IgR1BbNjMtMzJdICovCiAjZGVmaW5lIFBHU1IyCQlfX1JFRygweDQwRjAwMDI4KSAgLyogUG93ZXIgTWFuYWdlciBHUElPIFNsZWVwIFN0YXRlIFJlZ2lzdGVyIGZvciBHUFs4NC02NF0gKi8KKyNkZWZpbmUgUEdTUjMJCV9fUkVHKDB4NDBGMDAwMkMpICAvKiBQb3dlciBNYW5hZ2VyIEdQSU8gU2xlZXAgU3RhdGUgUmVnaXN0ZXIgZm9yIEdQWzExOC05Nl0gKi8KICNkZWZpbmUgUkNTUgkJX19SRUcoMHg0MEYwMDAzMCkgIC8qIFJlc2V0IENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCiAKKyNkZWZpbmUJICAgUFNMUgkgICBfX1JFRygweDQwRjAwMDM0KQkvKiBQb3dlciBNYW5hZ2VyIFNsZWVwIENvbmZpZyBSZWdpc3RlciAqLworI2RlZmluZQkgICBQU1RSCSAgIF9fUkVHKDB4NDBGMDAwMzgpCS8qIFBvd2VyIE1hbmFnZXIgU3RhbmRieSBDb25maWcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJICAgUFNOUgkgICBfX1JFRygweDQwRjAwMDNDKQkvKiBQb3dlciBNYW5hZ2VyIFNlbnNlIENvbmZpZyBSZWdpc3RlciAqLworI2RlZmluZQkgICBQVkNSCSAgIF9fUkVHKDB4NDBGMDAwNDApCS8qIFBvd2VyIE1hbmFnZXIgVm9sdGFnZUNvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJICAgUEtXUgkgICBfX1JFRygweDQwRjAwMDUwKQkvKiBQb3dlciBNYW5hZ2VyIEtCIFdha2UtdXAgRW5hYmxlIFJlZyAqLworI2RlZmluZQkgICBQS1NSCSAgIF9fUkVHKDB4NDBGMDAwNTQpCS8qIFBvd2VyIE1hbmFnZXIgS0IgTGV2ZWwtRGV0ZWN0IFJlZ2lzdGVyICovCisjZGVmaW5lCSAgIFBDTUQoeCkgX19SRUcoMHg0MEYwMDA4MCArIHgqNCkKKyNkZWZpbmUJICAgUENNRDAgICBfX1JFRygweDQwRjAwMDgwICsgMCAqIDQpCisjZGVmaW5lCSAgIFBDTUQxICAgX19SRUcoMHg0MEYwMDA4MCArIDEgKiA0KQorI2RlZmluZQkgICBQQ01EMiAgIF9fUkVHKDB4NDBGMDAwODAgKyAyICogNCkKKyNkZWZpbmUJICAgUENNRDMgICBfX1JFRygweDQwRjAwMDgwICsgMyAqIDQpCisjZGVmaW5lCSAgIFBDTUQ0ICAgX19SRUcoMHg0MEYwMDA4MCArIDQgKiA0KQorI2RlZmluZQkgICBQQ01ENSAgIF9fUkVHKDB4NDBGMDAwODAgKyA1ICogNCkKKyNkZWZpbmUJICAgUENNRDYgICBfX1JFRygweDQwRjAwMDgwICsgNiAqIDQpCisjZGVmaW5lCSAgIFBDTUQ3ICAgX19SRUcoMHg0MEYwMDA4MCArIDcgKiA0KQorI2RlZmluZQkgICBQQ01EOCAgIF9fUkVHKDB4NDBGMDAwODAgKyA4ICogNCkKKyNkZWZpbmUJICAgUENNRDkgICBfX1JFRygweDQwRjAwMDgwICsgOSAqIDQpCisjZGVmaW5lCSAgIFBDTUQxMCAgX19SRUcoMHg0MEYwMDA4MCArIDEwICogNCkKKyNkZWZpbmUJICAgUENNRDExICBfX1JFRygweDQwRjAwMDgwICsgMTEgKiA0KQorI2RlZmluZQkgICBQQ01EMTIgIF9fUkVHKDB4NDBGMDAwODAgKyAxMiAqIDQpCisjZGVmaW5lCSAgIFBDTUQxMyAgX19SRUcoMHg0MEYwMDA4MCArIDEzICogNCkKKyNkZWZpbmUJICAgUENNRDE0ICBfX1JFRygweDQwRjAwMDgwICsgMTQgKiA0KQorI2RlZmluZQkgICBQQ01EMTUgIF9fUkVHKDB4NDBGMDAwODAgKyAxNSAqIDQpCisjZGVmaW5lCSAgIFBDTUQxNiAgX19SRUcoMHg0MEYwMDA4MCArIDE2ICogNCkKKyNkZWZpbmUJICAgUENNRDE3ICBfX1JFRygweDQwRjAwMDgwICsgMTcgKiA0KQorI2RlZmluZQkgICBQQ01EMTggIF9fUkVHKDB4NDBGMDAwODAgKyAxOCAqIDQpCisjZGVmaW5lCSAgIFBDTUQxOSAgX19SRUcoMHg0MEYwMDA4MCArIDE5ICogNCkKKyNkZWZpbmUJICAgUENNRDIwICBfX1JFRygweDQwRjAwMDgwICsgMjAgKiA0KQorI2RlZmluZQkgICBQQ01EMjEgIF9fUkVHKDB4NDBGMDAwODAgKyAyMSAqIDQpCisjZGVmaW5lCSAgIFBDTUQyMiAgX19SRUcoMHg0MEYwMDA4MCArIDIyICogNCkKKyNkZWZpbmUJICAgUENNRDIzICBfX1JFRygweDQwRjAwMDgwICsgMjMgKiA0KQorI2RlZmluZQkgICBQQ01EMjQgIF9fUkVHKDB4NDBGMDAwODAgKyAyNCAqIDQpCisjZGVmaW5lCSAgIFBDTUQyNSAgX19SRUcoMHg0MEYwMDA4MCArIDI1ICogNCkKKyNkZWZpbmUJICAgUENNRDI2ICBfX1JFRygweDQwRjAwMDgwICsgMjYgKiA0KQorI2RlZmluZQkgICBQQ01EMjcgIF9fUkVHKDB4NDBGMDAwODAgKyAyNyAqIDQpCisjZGVmaW5lCSAgIFBDTUQyOCAgX19SRUcoMHg0MEYwMDA4MCArIDI4ICogNCkKKyNkZWZpbmUJICAgUENNRDI5ICBfX1JFRygweDQwRjAwMDgwICsgMjkgKiA0KQorI2RlZmluZQkgICBQQ01EMzAgIF9fUkVHKDB4NDBGMDAwODAgKyAzMCAqIDQpCisjZGVmaW5lCSAgIFBDTUQzMSAgX19SRUcoMHg0MEYwMDA4MCArIDMxICogNCkKKworI2RlZmluZQkgICBQQ01EX01CQyAgICAoMTw8MTIpCisjZGVmaW5lCSAgIFBDTURfRENFICAgICgxPDwxMSkKKyNkZWZpbmUJICAgUENNRF9MQyAgICAgKDE8PDEwKQorLyogRklYTUU6ICBQQ01EX1NRQyBuZWVkIGJlIGNoZWNrZWQuICAgKi8KKyNkZWZpbmUJICAgUENNRF9TUUMgICAgKDM8PDgpICAvKiBjdXJyZW50bHkgb25seSBiaXQgOCBpcyBjaGFuZ2VyYWJsZSwgKi8KKwkJCQkvKiBiaXQgOSBzaG91bGQgYmUgMCBhbGwgZGF5LiAqLworI2RlZmluZSBQVkNSX1ZDU0EJCSAgICgweDE8PDE0KQorI2RlZmluZSBQVkNSX0NvbW1hbmREZWxheQkgICAoMHhmODApCisvKiBkZWZpbmUgTUFDUk8gZm9yIFBvd2VyIE1hbmFnZXIgR2VuZXJhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIChQQ0ZSKSAqLworI2RlZmluZSBQQ0ZSX0ZWQwkJICAgKDB4MSA8PCAxMCkKKyNkZWZpbmUgUENGUl9QSTJDX0VOCQkgICAoMHgxIDw8IDYpCisKKyNkZWZpbmUgUFNTUl9PVEdQSAkoMSA8PCA2KQkvKiBPVEcgUGVyaXBoZXJhbCBjb250cm9sIEhvbGQgKi8KICNkZWZpbmUgUFNTUl9SREgJKDEgPDwgNSkJLyogUmVhZCBEaXNhYmxlIEhvbGQgKi8KICNkZWZpbmUgUFNTUl9QSAkJKDEgPDwgNCkJLyogUGVyaXBoZXJhbCBDb250cm9sIEhvbGQgKi8KICNkZWZpbmUgUFNTUl9WRlMJKDEgPDwgMikJLyogVkREIEZhdWx0IFN0YXR1cyAqLwpAQCAtMTA3MiwyMiArMTIyNSwxOCBAQAogI2RlZmluZSBSQ1NSX1dEUgkoMSA8PCAxKQkvKiBXYXRjaGRvZyBSZXNldCAqLwogI2RlZmluZSBSQ1NSX0hXUgkoMSA8PCAwKQkvKiBIYXJkd2FyZSBSZXNldCAqLwogCi0KIC8qCiAgKiBTU1AgU2VyaWFsIFBvcnQgUmVnaXN0ZXJzCiAgKi8KLQogI2RlZmluZSBTU0NSMAkJX19SRUcoMHg0MTAwMDAwMCkgIC8qIFNTUCBDb250cm9sIFJlZ2lzdGVyIDAgKi8KICNkZWZpbmUgU1NDUjEJCV9fUkVHKDB4NDEwMDAwMDQpICAvKiBTU1AgQ29udHJvbCBSZWdpc3RlciAxICovCiAjZGVmaW5lIFNTU1IJCV9fUkVHKDB4NDEwMDAwMDgpICAvKiBTU1AgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIFNTSVRSCQlfX1JFRygweDQxMDAwMDBDKSAgLyogU1NQIEludGVycnVwdCBUZXN0IFJlZ2lzdGVyICovCiAjZGVmaW5lIFNTRFIJCV9fUkVHKDB4NDEwMDAwMTApICAvKiAoV3JpdGUgLyBSZWFkKSBTU1AgRGF0YSBXcml0ZSBSZWdpc3Rlci9TU1AgRGF0YSBSZWFkIFJlZ2lzdGVyICovCiAKLQogLyoKICAqIE11bHRpTWVkaWFDYXJkIChNTUMpIGNvbnRyb2xsZXIKICAqLwotCiAjZGVmaW5lIE1NQ19TVFJQQ0wJX19SRUcoMHg0MTEwMDAwMCkgIC8qIENvbnRyb2wgdG8gc3RhcnQgYW5kIHN0b3AgTU1DIGNsb2NrICovCiAjZGVmaW5lIE1NQ19TVEFUCV9fUkVHKDB4NDExMDAwMDQpICAvKiBNTUMgU3RhdHVzIFJlZ2lzdGVyIChyZWFkIG9ubHkpICovCiAjZGVmaW5lIE1NQ19DTEtSVAlfX1JFRygweDQxMTAwMDA4KSAgLyogTU1DIGNsb2NrIHJhdGUgKi8KQEAgLTExMDcsMjQgKzEyNTYsMzcgQEAKICNkZWZpbmUgTU1DX1JYRklGTwlfX1JFRygweDQxMTAwMDQwKSAgLyogUmVjZWl2ZSBGSUZPIChyZWFkIG9ubHkpICovCiAjZGVmaW5lIE1NQ19UWEZJRk8JX19SRUcoMHg0MTEwMDA0NCkgIC8qIFRyYW5zbWl0IEZJRk8gKHdyaXRlIG9ubHkpICovCiAKLQogLyoKICAqIENvcmUgQ2xvY2sKICAqLwotCiAjZGVmaW5lIENDQ1IJCV9fUkVHKDB4NDEzMDAwMDApICAvKiBDb3JlIENsb2NrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KICNkZWZpbmUgQ0tFTgkJX19SRUcoMHg0MTMwMDAwNCkgIC8qIENsb2NrIEVuYWJsZSBSZWdpc3RlciAqLwogI2RlZmluZSBPU0NDCQlfX1JFRygweDQxMzAwMDA4KSAgLyogT3NjaWxsYXRvciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCiAKICNkZWZpbmUgQ0NDUl9OX01BU0sJMHgwMzgwCQkvKiBSdW4gTW9kZSBGcmVxdWVuY3kgdG8gVHVyYm8gTW9kZSBGcmVxdWVuY3kgTXVsdGlwbGllciAqLworI2lmICFkZWZpbmVkKENPTkZJR19QWEEyN1gpCiAjZGVmaW5lIENDQ1JfTV9NQVNLCTB4MDA2MAkJLyogTWVtb3J5IEZyZXF1ZW5jeSB0byBSdW4gTW9kZSBGcmVxdWVuY3kgTXVsdGlwbGllciAqLworI2VuZGlmCiAjZGVmaW5lIENDQ1JfTF9NQVNLCTB4MDAxZgkJLyogQ3J5c3RhbCBGcmVxdWVuY3kgdG8gTWVtb3J5IEZyZXF1ZW5jeSBNdWx0aXBsaWVyICovCiAKKyNkZWZpbmUgQ0tFTjI0X0NBTUVSQQkoMSA8PCAyNCkJLyogQ2FtZXJhIEludGVyZmFjZSBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjIzX1NTUDEJKDEgPDwgMjMpCS8qIFNTUDEgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjIyX01FTUMJKDEgPDwgMjIpCS8qIE1lbW9yeSBDb250cm9sbGVyIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMjFfTUVNU1RLCSgxIDw8IDIxKQkvKiBNZW1vcnkgU3RpY2sgSG9zdCBDb250cm9sbGVyICovCisjZGVmaW5lIENLRU4yMF9JTQkoMSA8PCAyMCkJLyogSW50ZXJuYWwgTWVtb3J5IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTlfS0VZUEFECSgxIDw8IDE5KQkvKiBLZXlwYWQgSW50ZXJmYWNlIENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMThfVVNJTQkoMSA8PCAxOCkJLyogVVNJTSBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMTdfTVNMCSgxIDw8IDE3KQkvKiBNU0wgVW5pdCBDbG9jayBFbmFibGUgKi8KICNkZWZpbmUgQ0tFTjE2X0xDRAkoMSA8PCAxNikJLyogTENEIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xNV9QV1JJMkMJKDEgPDwgMTUpCS8qIFBXUiBJMkMgVW5pdCBDbG9jayBFbmFibGUgKi8KICNkZWZpbmUgQ0tFTjE0X0kyQwkoMSA8PCAxNCkJLyogSTJDIFVuaXQgQ2xvY2sgRW5hYmxlICovCiAjZGVmaW5lIENLRU4xM19GSUNQCSgxIDw8IDEzKQkvKiBGSUNQIFVuaXQgQ2xvY2sgRW5hYmxlICovCiAjZGVmaW5lIENLRU4xMl9NTUMJKDEgPDwgMTIpCS8qIE1NQyBVbml0IENsb2NrIEVuYWJsZSAqLwogI2RlZmluZSBDS0VOMTFfVVNCCSgxIDw8IDExKQkvKiBVU0IgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19QWEEyN1gpCisjZGVmaW5lIENLRU4xMF9VU0JIT1NUCSgxIDw8IDEwKQkvKiBVU0IgSG9zdCBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VOMjRfQ0FNRVJBCSgxIDw8IDI0KQkvKiBDYW1lcmEgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNlbmRpZgogI2RlZmluZSBDS0VOOF9JMlMJKDEgPDwgOCkJLyogSTJTIFVuaXQgQ2xvY2sgRW5hYmxlICovCiAjZGVmaW5lIENLRU43X0JUVUFSVAkoMSA8PCA3KQkvKiBCVFVBUlQgVW5pdCBDbG9jayBFbmFibGUgKi8KICNkZWZpbmUgQ0tFTjZfRkZVQVJUCSgxIDw8IDYpCS8qIEZGVUFSVCBVbml0IENsb2NrIEVuYWJsZSAqLwpAQCAtMTEzNywzNCArMTI5OSwzNiBAQAogI2RlZmluZSBPU0NDX09PTgkoMSA8PCAxKQkvKiAzMi43NjhrSHogT09OICh3cml0ZS1vbmNlIG9ubHkgYml0KSAqLwogI2RlZmluZSBPU0NDX09PSwkoMSA8PCAwKQkvKiAzMi43NjhrSHogT09LIChyZWFkLW9ubHkgYml0KSAqLwogCi0jZGVmaW5lICBDQ0NSX0wwOSAgICAgICgweDFGKQotI2RlZmluZSAgQ0NDUl9MMjcgICAgICAoMHgxKQotI2RlZmluZSAgQ0NDUl9MMzIgICAgICAoMHgyKQotI2RlZmluZSAgQ0NDUl9MMzYgICAgICAoMHgzKQotI2RlZmluZSAgQ0NDUl9MNDAgICAgICAoMHg0KQotI2RlZmluZSAgQ0NDUl9MNDUgICAgICAoMHg1KQorI2lmICFkZWZpbmVkKENPTkZJR19QWEEyN1gpCisjZGVmaW5lCSBDQ0NSX0wwOSAgICAgICgweDFGKQorI2RlZmluZQkgQ0NDUl9MMjcgICAgICAoMHgxKQorI2RlZmluZQkgQ0NDUl9MMzIgICAgICAoMHgyKQorI2RlZmluZQkgQ0NDUl9MMzYgICAgICAoMHgzKQorI2RlZmluZQkgQ0NDUl9MNDAgICAgICAoMHg0KQorI2RlZmluZQkgQ0NDUl9MNDUgICAgICAoMHg1KQogCi0jZGVmaW5lICBDQ0NSX00xICAgICAgICgweDEgPDwgNSkKLSNkZWZpbmUgIENDQ1JfTTIgICAgICAgKDB4MiA8PCA1KQotI2RlZmluZSAgQ0NDUl9NNCAgICAgICAoMHgzIDw8IDUpCisjZGVmaW5lCSBDQ0NSX00xICAgICAgICgweDEgPDwgNSkKKyNkZWZpbmUJIENDQ1JfTTIgICAgICAgKDB4MiA8PCA1KQorI2RlZmluZQkgQ0NDUl9NNCAgICAgICAoMHgzIDw8IDUpCiAKLSNkZWZpbmUgIENDQ1JfTjEwICAgICAgKDB4MiA8PCA3KQotI2RlZmluZSAgQ0NDUl9OMTUgICAgICAoMHgzIDw8IDcpCi0jZGVmaW5lICBDQ0NSX04yMCAgICAgICgweDQgPDwgNykKLSNkZWZpbmUgIENDQ1JfTjI1ICAgICAgKDB4NSA8PCA3KQotI2RlZmluZSAgQ0NDUl9OMzAgICAgICAoMHg2IDw8IDcpCisjZGVmaW5lCSBDQ0NSX04xMCAgICAgICgweDIgPDwgNykKKyNkZWZpbmUJIENDQ1JfTjE1ICAgICAgKDB4MyA8PCA3KQorI2RlZmluZQkgQ0NDUl9OMjAgICAgICAoMHg0IDw8IDcpCisjZGVmaW5lCSBDQ0NSX04yNSAgICAgICgweDUgPDwgNykKKyNkZWZpbmUJIENDQ1JfTjMwICAgICAgKDB4NiA8PCA3KQorI2VuZGlmCiAKIC8qCiAgKiBMQ0QKICAqLwotCiAjZGVmaW5lIExDQ1IwCQlfX1JFRygweDQ0MDAwMDAwKSAgLyogTENEIENvbnRyb2xsZXIgQ29udHJvbCBSZWdpc3RlciAwICovCiAjZGVmaW5lIExDQ1IxCQlfX1JFRygweDQ0MDAwMDA0KSAgLyogTENEIENvbnRyb2xsZXIgQ29udHJvbCBSZWdpc3RlciAxICovCiAjZGVmaW5lIExDQ1IyCQlfX1JFRygweDQ0MDAwMDA4KSAgLyogTENEIENvbnRyb2xsZXIgQ29udHJvbCBSZWdpc3RlciAyICovCiAjZGVmaW5lIExDQ1IzCQlfX1JFRygweDQ0MDAwMDBDKSAgLyogTENEIENvbnRyb2xsZXIgQ29udHJvbCBSZWdpc3RlciAzICovCiAjZGVmaW5lIERGQlIwCQlfX1JFRygweDQ0MDAwMDIwKSAgLyogRE1BIENoYW5uZWwgMCBGcmFtZSBCcmFuY2ggUmVnaXN0ZXIgKi8KICNkZWZpbmUgREZCUjEJCV9fUkVHKDB4NDQwMDAwMjQpICAvKiBETUEgQ2hhbm5lbCAxIEZyYW1lIEJyYW5jaCBSZWdpc3RlciAqLwotI2RlZmluZSBMQ1NSCQlfX1JFRygweDQ0MDAwMDM4KSAgLyogTENEIENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIExDU1IwCQlfX1JFRygweDQ0MDAwMDM4KSAgLyogTENEIENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCisjZGVmaW5lIExDU1IxCQlfX1JFRygweDQ0MDAwMDM0KSAgLyogTENEIENvbnRyb2xsZXIgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIExJSURSCQlfX1JFRygweDQ0MDAwMDNDKSAgLyogTENEIENvbnRyb2xsZXIgSW50ZXJydXB0IElEIFJlZ2lzdGVyICovCiAjZGVmaW5lIFRNRURSR0JSCV9fUkVHKDB4NDQwMDAwNDApICAvKiBUTUVEIFJHQiBTZWVkIFJlZ2lzdGVyICovCiAjZGVmaW5lIFRNRURDUgkJX19SRUcoMHg0NDAwMDA0NCkgIC8qIFRNRUQgQ29udHJvbCBSZWdpc3RlciAqLwpAQCAtMTE5Miw1MSArMTM1Niw1NiBAQAogI2RlZmluZSBMQ0NSMF9RRE0JKDEgPDwgMTEpCS8qIExDRCBRdWljayBEaXNhYmxlIG1hc2sgKi8KICNkZWZpbmUgTENDUjBfUERECSgweGZmIDw8IDEyKQkvKiBQYWxldHRlIERNQSByZXF1ZXN0IGRlbGF5ICovCiAjZGVmaW5lIExDQ1IwX1BERF9TCTEyCi0jZGVmaW5lIExDQ1IwX0JNCSgxIDw8IDIwKSAJLyogQnJhbmNoIG1hc2sgKi8KKyNkZWZpbmUgTENDUjBfQk0JKDEgPDwgMjApCS8qIEJyYW5jaCBtYXNrICovCiAjZGVmaW5lIExDQ1IwX09VTQkoMSA8PCAyMSkJLyogT3V0cHV0IEZJRk8gdW5kZXJydW4gbWFzayAqLworI2lmIGRlZmluZWQoQ09ORklHX1BYQTI3WCkKKyNkZWZpbmUgTENDUjBfTENEVAkoMSA8PCAyMikJLyogTENEIFBhbmVsIFR5cGUgKi8KKyNkZWZpbmUgTENDUjBfUkRTVE0JKDEgPDwgMjMpCS8qIFJlYWQgU3RhdHVzIEludGVycnVwdCBNYXNrICovCisjZGVmaW5lIExDQ1IwX0NNRElNCSgxIDw8IDI0KQkvKiBDb21tYW5kIEludGVycnVwdCBNYXNrICovCisjZW5kaWYKIAotI2RlZmluZSBMQ0NSMV9QUEwgICAgICAgRmxkICgxMCwgMCkgICAgICAvKiBQaXhlbHMgUGVyIExpbmUgLSAxICovCi0jZGVmaW5lIExDQ1IxX0Rpc1dkdGgoUGl4ZWwpICAgICAgICAgICAgLyogRGlzcGxheSBXaWR0aCBbMS4uODAwIHBpeC5dICAqLyBcCisjZGVmaW5lIExDQ1IxX1BQTAlGbGQgKDEwLCAwKQkgLyogUGl4ZWxzIFBlciBMaW5lIC0gMSAqLworI2RlZmluZSBMQ0NSMV9EaXNXZHRoKFBpeGVsKQkJLyogRGlzcGxheSBXaWR0aCBbMS4uODAwIHBpeC5dCSovIFwKIAkJCSgoKFBpeGVsKSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9QUEwpKQogCi0jZGVmaW5lIExDQ1IxX0hTVyAgICAgICBGbGQgKDYsIDEwKSAgICAgLyogSG9yaXpvbnRhbCBTeW5jaHJvbml6YXRpb24gICAgICovCi0jZGVmaW5lIExDQ1IxX0hvclNuY2hXZHRoKFRwaXgpICAgICAgICAgLyogSG9yaXpvbnRhbCBTeW5jaHJvbml6YXRpb24gICAgICovIFwKLQkJCQkJLyogcHVsc2UgV2lkdGggWzEuLjY0IFRwaXhdICAgICAgICovIFwKKyNkZWZpbmUgTENDUjFfSFNXCUZsZCAoNiwgMTApCS8qIEhvcml6b250YWwgU3luY2hyb25pemF0aW9uCSAgKi8KKyNkZWZpbmUgTENDUjFfSG9yU25jaFdkdGgoVHBpeCkJCS8qIEhvcml6b250YWwgU3luY2hyb25pemF0aW9uCSAgKi8gXAorCQkJCQkvKiBwdWxzZSBXaWR0aCBbMS4uNjQgVHBpeF0JICAqLyBcCiAJCQkoKChUcGl4KSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9IU1cpKQogCi0jZGVmaW5lIExDQ1IxX0VMVyAgICAgICBGbGQgKDgsIDE2KSAgICAgLyogRW5kLW9mLUxpbmUgcGl4ZWwgY2xvY2sgV2FpdCAgICAqLwotCQkJCQkvKiBjb3VudCAtIDEgW1RwaXhdICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExDQ1IxX0VuZExuRGVsKFRwaXgpICAgICAgICAgICAgLyogIEVuZC1vZi1MaW5lIERlbGF5ICAgICAgICAgICAgICAqLyBcCi0JCQkJCS8qICBbMS4uMjU2IFRwaXhdICAgICAgICAgICAgICAgICAgKi8gXAorI2RlZmluZSBMQ0NSMV9FTFcJRmxkICg4LCAxNikJLyogRW5kLW9mLUxpbmUgcGl4ZWwgY2xvY2sgV2FpdAkgICAqLworCQkJCQkvKiBjb3VudCAtIDEgW1RwaXhdCQkgICAqLworI2RlZmluZSBMQ0NSMV9FbmRMbkRlbChUcGl4KQkJLyogIEVuZC1vZi1MaW5lIERlbGF5CQkgICAqLyBcCisJCQkJCS8qICBbMS4uMjU2IFRwaXhdCQkgICAqLyBcCiAJCQkoKChUcGl4KSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9FTFcpKQogCi0jZGVmaW5lIExDQ1IxX0JMVyAgICAgICBGbGQgKDgsIDI0KSAgICAgLyogQmVnaW5uaW5nLW9mLUxpbmUgcGl4ZWwgY2xvY2sgICAqLwotCQkJCQkvKiBXYWl0IGNvdW50IC0gMSBbVHBpeF0gICAgICAgICAgICovCi0jZGVmaW5lIExDQ1IxX0JlZ0xuRGVsKFRwaXgpICAgICAgICAgICAgLyogIEJlZ2lubmluZy1vZi1MaW5lIERlbGF5ICAgICAgICAqLyBcCi0JCQkJCS8qICBbMS4uMjU2IFRwaXhdICAgICAgICAgICAgICAgICAgKi8gXAorI2RlZmluZSBMQ0NSMV9CTFcJRmxkICg4LCAyNCkJLyogQmVnaW5uaW5nLW9mLUxpbmUgcGl4ZWwgY2xvY2sgICAqLworCQkJCQkvKiBXYWl0IGNvdW50IC0gMSBbVHBpeF0JICAgKi8KKyNkZWZpbmUgTENDUjFfQmVnTG5EZWwoVHBpeCkJCS8qICBCZWdpbm5pbmctb2YtTGluZSBEZWxheQkgICAqLyBcCisJCQkJCS8qICBbMS4uMjU2IFRwaXhdCQkgICAqLyBcCiAJCQkoKChUcGl4KSAtIDEpIDw8IEZTaGZ0IChMQ0NSMV9CTFcpKQogCiAKLSNkZWZpbmUgTENDUjJfTFBQICAgICAgIEZsZCAoMTAsIDApICAgICAvKiBMaW5lIFBlciBQYW5lbCAtIDEgICAgICAgICAgICAgICovCi0jZGVmaW5lIExDQ1IyX0Rpc0hnaHQoTGluZSkgICAgICAgICAgICAgLyogIERpc3BsYXkgSGVpZ2h0IFsxLi4xMDI0IGxpbmVzXSAqLyBcCisjZGVmaW5lIExDQ1IyX0xQUAlGbGQgKDEwLCAwKQkvKiBMaW5lIFBlciBQYW5lbCAtIDEJCSAgICovCisjZGVmaW5lIExDQ1IyX0Rpc0hnaHQoTGluZSkJCS8qICBEaXNwbGF5IEhlaWdodCBbMS4uMTAyNCBsaW5lc10gKi8gXAogCQkJKCgoTGluZSkgLSAxKSA8PCBGU2hmdCAoTENDUjJfTFBQKSkKIAotI2RlZmluZSBMQ0NSMl9WU1cgICAgICAgRmxkICg2LCAxMCkgICAgIC8qIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAgKi8KLQkJCQkJLyogV2lkdGggLSAxIFtUbG5dIChMX0ZDTEspICAgICAgICAqLwotI2RlZmluZSBMQ0NSMl9WcnRTbmNoV2R0aChUbG4pICAgICAgICAgIC8qICBWZXJ0aWNhbCBTeW5jaHJvbml6YXRpb24gcHVsc2UgKi8gXAotCQkJCQkvKiAgV2lkdGggWzEuLjY0IFRsbl0gICAgICAgICAgICAgICovIFwKKyNkZWZpbmUgTENDUjJfVlNXCUZsZCAoNiwgMTApCS8qIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAgKi8KKwkJCQkJLyogV2lkdGggLSAxIFtUbG5dIChMX0ZDTEspCSAgICovCisjZGVmaW5lIExDQ1IyX1ZydFNuY2hXZHRoKFRsbikJCS8qICBWZXJ0aWNhbCBTeW5jaHJvbml6YXRpb24gcHVsc2UgKi8gXAorCQkJCQkvKiAgV2lkdGggWzEuLjY0IFRsbl0JCSAgICovIFwKIAkJCSgoKFRsbikgLSAxKSA8PCBGU2hmdCAoTENDUjJfVlNXKSkKIAotI2RlZmluZSBMQ0NSMl9FRlcgICAgICAgRmxkICg4LCAxNikgICAgIC8qIEVuZC1vZi1GcmFtZSBsaW5lIGNsb2NrIFdhaXQgICAgKi8KLQkJCQkJLyogY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMQ0NSMl9FbmRGcm1EZWwoVGxuKSAgICAgICAgICAgIC8qICBFbmQtb2YtRnJhbWUgRGVsYXkgICAgICAgICAgICAgKi8gXAotCQkJCQkvKiAgWzAuLjI1NSBUbG5dICAgICAgICAgICAgICAgICAgICovIFwKKyNkZWZpbmUgTENDUjJfRUZXCUZsZCAoOCwgMTYpCS8qIEVuZC1vZi1GcmFtZSBsaW5lIGNsb2NrIFdhaXQJICAgKi8KKwkJCQkJLyogY291bnQgW1Rsbl0JCQkgICAqLworI2RlZmluZSBMQ0NSMl9FbmRGcm1EZWwoVGxuKQkJLyogIEVuZC1vZi1GcmFtZSBEZWxheQkJICAgKi8gXAorCQkJCQkvKiAgWzAuLjI1NSBUbG5dCQkgICAqLyBcCiAJCQkoKFRsbikgPDwgRlNoZnQgKExDQ1IyX0VGVykpCiAKLSNkZWZpbmUgTENDUjJfQkZXICAgICAgIEZsZCAoOCwgMjQpICAgICAvKiBCZWdpbm5pbmctb2YtRnJhbWUgbGluZSBjbG9jayAgICovCi0JCQkJCS8qIFdhaXQgY291bnQgW1Rsbl0gICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTENDUjJfQmVnRnJtRGVsKFRsbikgICAgICAgICAgICAvKiAgQmVnaW5uaW5nLW9mLUZyYW1lIERlbGF5ICAgICAgICovIFwKLQkJCQkJLyogIFswLi4yNTUgVGxuXSAgICAgICAgICAgICAgICAgICAqLyBcCisjZGVmaW5lIExDQ1IyX0JGVwlGbGQgKDgsIDI0KQkvKiBCZWdpbm5pbmctb2YtRnJhbWUgbGluZSBjbG9jayAgICovCisJCQkJCS8qIFdhaXQgY291bnQgW1Rsbl0JCSAgICovCisjZGVmaW5lIExDQ1IyX0JlZ0ZybURlbChUbG4pCQkvKiAgQmVnaW5uaW5nLW9mLUZyYW1lIERlbGF5CSAgICovIFwKKwkJCQkJLyogIFswLi4yNTUgVGxuXQkJICAgKi8gXAogCQkJKChUbG4pIDw8IEZTaGZ0IChMQ0NSMl9CRlcpKQogCiAjaWYgMApAQCAtMTI1Nyw3OSArMTQyNiwxMDAgQEAKICNlbmRpZgogI2RlZmluZSBMQ0NSM19EUEMJKDEgPDwgMjcpCS8qIGRvdWJsZSBwaXhlbCBjbG9jayBtb2RlICovCiAKKyNkZWZpbmUgTENDUjNfUERGT1JfMAkgKDAgPDwgMzApCisjZGVmaW5lIExDQ1IzX1BERk9SXzEJICgxIDw8IDMwKQorI2RlZmluZSBMQ0NSM19QREZPUl8yCSAoMiA8PCAzMCkKKyNkZWZpbmUgTENDUjNfUERGT1JfMwkgKDMgPDwgMzApCiAKLSNkZWZpbmUgTENDUjNfUENEICAgICAgIEZsZCAoOCwgMCkgICAgICAvKiBQaXhlbCBDbG9jayBEaXZpc29yICovCi0jZGVmaW5lIExDQ1IzX1BpeENsa0RpdihEaXYpICAgICAgICAgICAgLyogUGl4ZWwgQ2xvY2sgRGl2aXNvciAqLyBcCisKKyNkZWZpbmUgTENDUjNfUENECUZsZCAoOCwgMCkJLyogUGl4ZWwgQ2xvY2sgRGl2aXNvciAqLworI2RlZmluZSBMQ0NSM19QaXhDbGtEaXYoRGl2KQkJLyogUGl4ZWwgQ2xvY2sgRGl2aXNvciAqLyBcCiAJCQkoKChEaXYpIDw8IEZTaGZ0IChMQ0NSM19QQ0QpKSkKIAogCi0jZGVmaW5lIExDQ1IzX0JQUCAgICAgICBGbGQgKDMsIDI0KSAgICAgLyogQml0IFBlciBQaXhlbCAqLwotI2RlZmluZSBMQ0NSM19CcHAoQnBwKSAgICAgICAgICAgICAgICAgIC8qIEJpdCBQZXIgUGl4ZWwgKi8gXAotCQkJKCgoQnBwKSA8PCBGU2hmdCAoTENDUjNfQlBQKSkpCisjZGVmaW5lIExDQ1IzX0JQUAlGbGQgKDMsIDI0KQkvKiBCaXQgUGVyIFBpeGVsICovCisjZGVmaW5lIExDQ1IzX0JwcChCcHApCQkJLyogQml0IFBlciBQaXhlbCAqLyBcCisJCQkoKCgoQnBwJjB4NykgPDwgRlNoZnQgKExDQ1IzX0JQUCkpKXwoKChCcHAmMHg4KTw8MjYpKSkKIAotI2RlZmluZSBMQ0NSM19BQ0IgICAgICAgRmxkICg4LCA4KSAgICAgIC8qIEFDIEJpYXMgKi8KLSNkZWZpbmUgTENDUjNfQWNiKEFjYikgICAgICAgICAgICAgICAgICAvKiBCQUMgQmlhcyAqLyBcCisjZGVmaW5lIExDQ1IzX0FDQglGbGQgKDgsIDgpCS8qIEFDIEJpYXMgKi8KKyNkZWZpbmUgTENDUjNfQWNiKEFjYikJCQkvKiBCQUMgQmlhcyAqLyBcCiAJCQkoKChBY2IpIDw8IEZTaGZ0IChMQ0NSM19BQ0IpKSkKIAotI2RlZmluZSBMQ0NSM19Ib3JTbmNoSCAgKExDQ1IzX0hTUCowKSAgIC8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KLQkJCQkJLyogIHB1bHNlIGFjdGl2ZSBIaWdoICAgICAgICAgICAgICAqLwotI2RlZmluZSBMQ0NSM19Ib3JTbmNoTCAgKExDQ1IzX0hTUCoxKSAgIC8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbiAgICAgKi8KKyNkZWZpbmUgTENDUjNfSG9yU25jaEgJKExDQ1IzX0hTUCowKQkvKiAgSG9yaXpvbnRhbCBTeW5jaHJvbml6YXRpb24JICAgKi8KKwkJCQkJLyogIHB1bHNlIGFjdGl2ZSBIaWdoCQkgICAqLworI2RlZmluZSBMQ0NSM19Ib3JTbmNoTAkoTENDUjNfSFNQKjEpCS8qICBIb3Jpem9udGFsIFN5bmNocm9uaXphdGlvbgkgICAqLwogCi0jZGVmaW5lIExDQ1IzX1ZydFNuY2hIICAoTENDUjNfVlNQKjApICAgLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLwotCQkJCQkvKiAgYWN0aXZlIEhpZ2ggICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIExDQ1IzX1ZydFNuY2hMICAoTENDUjNfVlNQKjEpICAgLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLwotCQkJCQkvKiAgYWN0aXZlIExvdyAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExDQ1IzX1ZydFNuY2hICShMQ0NSM19WU1AqMCkJLyogIFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbiBwdWxzZSAqLworCQkJCQkvKiAgYWN0aXZlIEhpZ2gJCQkgICAqLworI2RlZmluZSBMQ0NSM19WcnRTbmNoTAkoTENDUjNfVlNQKjEpCS8qICBWZXJ0aWNhbCBTeW5jaHJvbml6YXRpb24gcHVsc2UgKi8KKwkJCQkJLyogIGFjdGl2ZSBMb3cJCQkgICAqLwogCi0jZGVmaW5lIExDU1JfTERECSgxIDw8IDApCS8qIExDRCBEaXNhYmxlIERvbmUgKi8KLSNkZWZpbmUgTENTUl9TT0YJKDEgPDwgMSkJLyogU3RhcnQgb2YgZnJhbWUgKi8KLSNkZWZpbmUgTENTUl9CRVIJKDEgPDwgMikJLyogQnVzIGVycm9yICovCi0jZGVmaW5lIExDU1JfQUJDCSgxIDw8IDMpCS8qIEFDIEJpYXMgY291bnQgKi8KLSNkZWZpbmUgTENTUl9JVUwJKDEgPDwgNCkJLyogaW5wdXQgRklGTyB1bmRlcnJ1biBMb3dlciBwYW5lbCAqLwotI2RlZmluZSBMQ1NSX0lVVQkoMSA8PCA1KQkvKiBpbnB1dCBGSUZPIHVuZGVycnVuIFVwcGVyIHBhbmVsICovCi0jZGVmaW5lIExDU1JfT1UJCSgxIDw8IDYpCS8qIG91dHB1dCBGSUZPIHVuZGVycnVuICovCi0jZGVmaW5lIExDU1JfUUQJCSgxIDw8IDcpCS8qIHF1aWNrIGRpc2FibGUgKi8KLSNkZWZpbmUgTENTUl9FT0YJKDEgPDwgOCkJLyogZW5kIG9mIGZyYW1lICovCi0jZGVmaW5lIExDU1JfQlMJCSgxIDw8IDkpCS8qIGJyYW5jaCBzdGF0dXMgKi8KLSNkZWZpbmUgTENTUl9TSU5UCSgxIDw8IDEwKQkvKiBzdWJzZXF1ZW50IGludGVycnVwdCAqLworI2RlZmluZSBMQ1NSMF9MREQJKDEgPDwgMCkJLyogTENEIERpc2FibGUgRG9uZSAqLworI2RlZmluZSBMQ1NSMF9TT0YJKDEgPDwgMSkJLyogU3RhcnQgb2YgZnJhbWUgKi8KKyNkZWZpbmUgTENTUjBfQkVSCSgxIDw8IDIpCS8qIEJ1cyBlcnJvciAqLworI2RlZmluZSBMQ1NSMF9BQkMJKDEgPDwgMykJLyogQUMgQmlhcyBjb3VudCAqLworI2RlZmluZSBMQ1NSMF9JVUwJKDEgPDwgNCkJLyogaW5wdXQgRklGTyB1bmRlcnJ1biBMb3dlciBwYW5lbCAqLworI2RlZmluZSBMQ1NSMF9JVVUJKDEgPDwgNSkJLyogaW5wdXQgRklGTyB1bmRlcnJ1biBVcHBlciBwYW5lbCAqLworI2RlZmluZSBMQ1NSMF9PVQkoMSA8PCA2KQkvKiBvdXRwdXQgRklGTyB1bmRlcnJ1biAqLworI2RlZmluZSBMQ1NSMF9RRAkoMSA8PCA3KQkvKiBxdWljayBkaXNhYmxlICovCisjZGVmaW5lIExDU1IwX0VPRjAJKDEgPDwgOCkJLyogZW5kIG9mIGZyYW1lICovCisjZGVmaW5lIExDU1IwX0JTCSgxIDw8IDkpCS8qIGJyYW5jaCBzdGF0dXMgKi8KKyNkZWZpbmUgTENTUjBfU0lOVAkoMSA8PCAxMCkJLyogc3Vic2VxdWVudCBpbnRlcnJ1cHQgKi8KKworI2RlZmluZSBMQ1NSMV9TT0YxCSgxIDw8IDApCisjZGVmaW5lIExDU1IxX1NPRjIJKDEgPDwgMSkKKyNkZWZpbmUgTENTUjFfU09GMwkoMSA8PCAyKQorI2RlZmluZSBMQ1NSMV9TT0Y0CSgxIDw8IDMpCisjZGVmaW5lIExDU1IxX1NPRjUJKDEgPDwgNCkKKyNkZWZpbmUgTENTUjFfU09GNgkoMSA8PCA1KQorCisjZGVmaW5lIExDU1IxX0VPRjEJKDEgPDwgOCkKKyNkZWZpbmUgTENTUjFfRU9GMgkoMSA8PCA5KQorI2RlZmluZSBMQ1NSMV9FT0YzCSgxIDw8IDEwKQorI2RlZmluZSBMQ1NSMV9FT0Y0CSgxIDw8IDExKQorI2RlZmluZSBMQ1NSMV9FT0Y1CSgxIDw8IDEyKQorI2RlZmluZSBMQ1NSMV9FT0Y2CSgxIDw8IDEzKQorCisjZGVmaW5lIExDU1IxX0JTMQkoMSA8PCAxNikKKyNkZWZpbmUgTENTUjFfQlMyCSgxIDw8IDE3KQorI2RlZmluZSBMQ1NSMV9CUzMJKDEgPDwgMTgpCisjZGVmaW5lIExDU1IxX0JTNAkoMSA8PCAxOSkKKyNkZWZpbmUgTENTUjFfQlM1CSgxIDw8IDIwKQorI2RlZmluZSBMQ1NSMV9CUzYJKDEgPDwgMjEpCisKKyNkZWZpbmUgTENTUjFfSVUyCSgxIDw8IDI1KQorI2RlZmluZSBMQ1NSMV9JVTMJKDEgPDwgMjYpCisjZGVmaW5lIExDU1IxX0lVNAkoMSA8PCAyNykKKyNkZWZpbmUgTENTUjFfSVU1CSgxIDw8IDI4KQorI2RlZmluZSBMQ1NSMV9JVTYJKDEgPDwgMjkpCiAKICNkZWZpbmUgTERDTURfUEFMCSgxIDw8IDI2KQkvKiBpbnN0cnVjdHMgRE1BIHRvIGxvYWQgcGFsZXR0ZSBidWZmZXIgKi8KLQotI2RlZmluZSBMQ1NSX0xERAkoMSA8PCAwKQkvKiBMQ0QgRGlzYWJsZSBEb25lICovCi0jZGVmaW5lIExDU1JfU09GCSgxIDw8IDEpCS8qIFN0YXJ0IG9mIGZyYW1lICovCi0jZGVmaW5lIExDU1JfQkVSCSgxIDw8IDIpCS8qIEJ1cyBlcnJvciAqLwotI2RlZmluZSBMQ1NSX0FCQwkoMSA8PCAzKQkvKiBBQyBCaWFzIGNvdW50ICovCi0jZGVmaW5lIExDU1JfSVVMCSgxIDw8IDQpCS8qIGlucHV0IEZJRk8gdW5kZXJydW4gTG93ZXIgcGFuZWwgKi8KLSNkZWZpbmUgTENTUl9JVVUJKDEgPDwgNSkJLyogaW5wdXQgRklGTyB1bmRlcnJ1biBVcHBlciBwYW5lbCAqLwotI2RlZmluZSBMQ1NSX09VCQkoMSA8PCA2KQkvKiBvdXRwdXQgRklGTyB1bmRlcnJ1biAqLwotI2RlZmluZSBMQ1NSX1FECQkoMSA8PCA3KQkvKiBxdWljayBkaXNhYmxlICovCi0jZGVmaW5lIExDU1JfRU9GCSgxIDw8IDgpCS8qIGVuZCBvZiBmcmFtZSAqLwotI2RlZmluZSBMQ1NSX0JTCQkoMSA8PCA5KQkvKiBicmFuY2ggc3RhdHVzICovCi0jZGVmaW5lIExDU1JfU0lOVAkoMSA8PCAxMCkJLyogc3Vic2VxdWVudCBpbnRlcnJ1cHQgKi8KLQotI2RlZmluZSBMRENNRF9QQUwJKDEgPDwgMjYpCS8qIGluc3RydWN0cyBETUEgdG8gbG9hZCBwYWxldHRlIGJ1ZmZlciAqLworI2lmIGRlZmluZWQoQ09ORklHX1BYQTI3WCkKKyNkZWZpbmUgTERDTURfU09GSU5UCSgxIDw8IDIyKQorI2RlZmluZSBMRENNRF9FT0ZJTlQJKDEgPDwgMjEpCisjZW5kaWYKIAogLyoKICAqIE1lbW9yeSBjb250cm9sbGVyCiAgKi8KLQogI2RlZmluZSBNRU1DX0JBU0UJX19SRUcoMHg0ODAwMDAwMCkgIC8qIEJhc2Ugb2YgTWVtb3J5IENvbnRyb2xsZXIgKi8KLSNkZWZpbmUgTURDTkZHX09GRlNFVCAgIDB4MAotI2RlZmluZSBNRFJFRlJfT0ZGU0VUICAgMHg0Ci0jZGVmaW5lIE1TQzBfT0ZGU0VUICAgICAweDgKLSNkZWZpbmUgTVNDMV9PRkZTRVQgICAgIDB4QwotI2RlZmluZSBNU0MyX09GRlNFVCAgICAgMHgxMAotI2RlZmluZSBNRUNSX09GRlNFVCAgICAgMHgxNAotI2RlZmluZSBTWExDUl9PRkZTRVQgICAgMHgxOAotI2RlZmluZSBTWENORkdfT0ZGU0VUICAgMHgxQwotI2RlZmluZSBGTFlDTkZHX09GRlNFVCAgMHgyMAotI2RlZmluZSBTWE1SU19PRkZTRVQgICAgMHgyNAotI2RlZmluZSBNQ01FTTBfT0ZGU0VUICAgMHgyOAotI2RlZmluZSBNQ01FTTFfT0ZGU0VUICAgMHgyQwotI2RlZmluZSBNQ0FUVDBfT0ZGU0VUICAgMHgzMAotI2RlZmluZSBNQ0FUVDFfT0ZGU0VUICAgMHgzNAotI2RlZmluZSBNQ0lPMF9PRkZTRVQgICAgMHgzOAotI2RlZmluZSBNQ0lPMV9PRkZTRVQgICAgMHgzQwotI2RlZmluZSBNRE1SU19PRkZTRVQgICAgMHg0MAorI2RlZmluZSBNRENORkdfT0ZGU0VUCTB4MAorI2RlZmluZSBNRFJFRlJfT0ZGU0VUCTB4NAorI2RlZmluZSBNU0MwX09GRlNFVAkweDgKKyNkZWZpbmUgTVNDMV9PRkZTRVQJMHhDCisjZGVmaW5lIE1TQzJfT0ZGU0VUCTB4MTAKKyNkZWZpbmUgTUVDUl9PRkZTRVQJMHgxNAorI2RlZmluZSBTWExDUl9PRkZTRVQJMHgxOAorI2RlZmluZSBTWENORkdfT0ZGU0VUCTB4MUMKKyNkZWZpbmUgRkxZQ05GR19PRkZTRVQJMHgyMAorI2RlZmluZSBTWE1SU19PRkZTRVQJMHgyNAorI2RlZmluZSBNQ01FTTBfT0ZGU0VUCTB4MjgKKyNkZWZpbmUgTUNNRU0xX09GRlNFVAkweDJDCisjZGVmaW5lIE1DQVRUMF9PRkZTRVQJMHgzMAorI2RlZmluZSBNQ0FUVDFfT0ZGU0VUCTB4MzQKKyNkZWZpbmUgTUNJTzBfT0ZGU0VUCTB4MzgKKyNkZWZpbmUgTUNJTzFfT0ZGU0VUCTB4M0MKKyNkZWZpbmUgTURNUlNfT0ZGU0VUCTB4NDAKIAogI2RlZmluZSBNRENORkcJCV9fUkVHKDB4NDgwMDAwMDApICAvKiBTRFJBTSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDAgKi8KICNkZWZpbmUgTURDTkZHX0RFMAkweDAwMDAwMDAxCkBAIC0xMzY5LDUgKzE1NTksMTkxIEBACiAjZGVmaW5lIE1EUkVGUl9LMFJVTgkoMSA8PCAxMykJLyogU0RDTEswIFJ1biBDb250cm9sL1N0YXR1cyAqLwogI2RlZmluZSBNRFJFRlJfRTBQSU4JKDEgPDwgMTIpCS8qIFNEQ0tFMCBMZXZlbCBDb250cm9sL1N0YXR1cyAqLwogCisjaWYgZGVmaW5lZChDT05GSUdfUFhBMjdYKQogCi0jZW5kaWYKKyNkZWZpbmUgQVJCX0NOVFJMCV9fUkVHKDB4NDgwMDAwNDgpICAvKiBBcmJpdGVyIENvbnRyb2wgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBBUkJfRE1BX1NMVl9QQVJLCSgxPDwzMSkJICAgLyogQmUgcGFya2VkIHdpdGggRE1BIHNsYXZlIHdoZW4gaWRsZSAqLworI2RlZmluZSBBUkJfQ0lfUEFSSwkJKDE8PDMwKQkgICAvKiBCZSBwYXJrZWQgd2l0aCBDYW1lcmEgSW50ZXJmYWNlIHdoZW4gaWRsZSAqLworI2RlZmluZSBBUkJfRVhfTUVNX1BBUksJCSgxPDwyOSkJICAgLyogQmUgcGFya2VkIHdpdGggZXh0ZXJuYWwgTUVNQyB3aGVuIGlkbGUgKi8KKyNkZWZpbmUgQVJCX0lOVF9NRU1fUEFSSwkoMTw8MjgpCSAgIC8qIEJlIHBhcmtlZCB3aXRoIGludGVybmFsIE1FTUMgd2hlbiBpZGxlICovCisjZGVmaW5lIEFSQl9VU0JfUEFSSwkJKDE8PDI3KQkgICAvKiBCZSBwYXJrZWQgd2l0aCBVU0Igd2hlbiBpZGxlICovCisjZGVmaW5lIEFSQl9MQ0RfUEFSSwkJKDE8PDI2KQkgICAvKiBCZSBwYXJrZWQgd2l0aCBMQ0Qgd2hlbiBpZGxlICovCisjZGVmaW5lIEFSQl9ETUFfUEFSSwkJKDE8PDI1KQkgICAvKiBCZSBwYXJrZWQgd2l0aCBETUEgd2hlbiBpZGxlICovCisjZGVmaW5lIEFSQl9DT1JFX1BBUksJCSgxPDwyNCkJICAgLyogQmUgcGFya2VkIHdpdGggY29yZSB3aGVuIGlkbGUgKi8KKyNkZWZpbmUgQVJCX0xPQ0tfRkxBRwkJKDE8PDIzKQkgICAvKiBPbmx5IExvY2tpbmcgbWFzdGVycyBnYWluIGFjY2VzcyB0byB0aGUgYnVzICovCisKKy8qIEludGVycnVwdCBDb250cm9sbGVyICovCisKKyNkZWZpbmUgSUNJUDIJCV9fUkVHKDB4NDBEMDAwOUMpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBJUlEgUGVuZGluZyBSZWdpc3RlciAyICovCisjZGVmaW5lIElDTVIyCQlfX1JFRygweDQwRDAwMEEwKSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTWFzayBSZWdpc3RlciAyICovCisjZGVmaW5lIElDTFIyCQlfX1JFRygweDQwRDAwMEE0KSAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgTGV2ZWwgUmVnaXN0ZXIgMiAqLworI2RlZmluZSBJQ0ZQMgkJX19SRUcoMHg0MEQwMDBBOCkgIC8qIEludGVycnVwdCBDb250cm9sbGVyIEZJUSBQZW5kaW5nIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgSUNQUjIJCV9fUkVHKDB4NDBEMDAwQUMpICAvKiBJbnRlcnJ1cHQgQ29udHJvbGxlciBQZW5kaW5nIFJlZ2lzdGVyIDIgKi8KKworLyogR2VuZXJhbCBQdXJwb3NlIEkvTyAqLworCisjZGVmaW5lIEdBRlIzX0wJCV9fUkVHKDB4NDBFMDAwNkMpICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzwxMTE6OTY+ICovCisjZGVmaW5lIEdBRlIzX1UJCV9fUkVHKDB4NDBFMDAwNzApICAvKiBHUElPIEFsdGVybmF0ZSBGdW5jdGlvbiBTZWxlY3QgUmVnaXN0ZXIgR1BJTzwxMjc6MTEyPiAqLworI2RlZmluZSBHUExSMwkJX19SRUcoMHg0MEUwMDEwMCkgIC8qIEdQSU8gUGluLUxldmVsIFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworI2RlZmluZSBHUERSMwkJX19SRUcoMHg0MEUwMDEwQykgIC8qIEdQSU8gUGluIERpcmVjdGlvbiBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKyNkZWZpbmUgR1BTUjMJCV9fUkVHKDB4NDBFMDAxMTgpICAvKiBHUElPIFBpbiBPdXRwdXQgU2V0IFJlZ2lzdGVyIEdQSU88MTI3Ojk2PiAqLworI2RlZmluZSBHUENSMwkJX19SRUcoMHg0MEUwMDEyNCkgIC8qIEdQSU8gUGluIE91dHB1dCBDbGVhciBSZWdpc3RlciBHUElPIDwxMjc6OTY+ICovCisjZGVmaW5lIEdSRVIzCQlfX1JFRygweDQwRTAwMTMwKSAgLyogR1BJTyBSaXNpbmctRWRnZSBEZXRlY3QgUmVnaXN0ZXIgR1BJTzwxMjc6OTY+ICovCisjZGVmaW5lIEdGRVIzCQlfX1JFRygweDQwRTAwMTNDKSAgLyogR1BJTyBGYWxsaW5nLUVkZ2UgRGV0ZWN0IFJlZ2lzdGVyIEdQSU88MzE6MD4gKi8KKyNkZWZpbmUgR0VEUjMJCV9fUkVHKDB4NDBFMDAxNDgpICAvKiBHUElPIEVkZ2UgRGV0ZWN0IFN0YXR1cyBSZWdpc3RlciBHUElPPDEyNzo5Nj4gKi8KKworLyogQ29yZSBDbG9jayAqLworCisjZGVmaW5lIENDU1IJCV9fUkVHKDB4NDEzMDAwMEMpIC8qIENvcmUgQ2xvY2sgU3RhdHVzIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgQ0tFTjIzX1NTUDEJKDEgPDwgMjMpIC8qIFNTUDEgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjIyX01FTUMJKDEgPDwgMjIpIC8qIE1lbW9yeSBDb250cm9sZXIgKi8KKyNkZWZpbmUgQ0tFTjIxX01TSEMJKDEgPDwgMjEpIC8qIE1lbWVyeSBTdGljayBIb3N0IENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQ0tFTjIwX0lNCSgxIDw8IDIwKSAvKiBJbnRlcm5hbCBNZW1vcnkgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xOV9LRVlQQUQJKDEgPDwgMTkpIC8qIEtleXBhZCBJbnRlcmZhY2UgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xOF9VU0lNCSgxIDw8IDE4KSAvKiBVU0lNIFVuaXQgQ2xvY2sgRW5hYmxlICovCisjZGVmaW5lIENLRU4xN19NU0wJKDEgPDwgMTcpIC8qIE1TTCBJbnRlcmZhY2UgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjE1X1BXUl9JMkMJKDEgPDwgMTUpIC8qIFBXUl9JMkMgVW5pdCBDbG9jayBFbmFibGUgKi8KKyNkZWZpbmUgQ0tFTjlfT1NUCSgxIDw8IDkpICAvKiBPUyBUaW1lciBVbml0IENsb2NrIEVuYWJsZSAqLworI2RlZmluZSBDS0VONF9TU1AzCSgxIDw8IDQpICAvKiBTU1AzIFVuaXQgQ2xvY2sgRW5hYmxlICovCisKKy8qIE1lbW9yeSBjb250cm9sbGVyICovCisKKyNkZWZpbmUgTURSRUZSX0swREI0CSgxIDw8IDI5KQkgIC8qIFNEQ0xLWzBdIGRpdmlkZSBieSA0ICovCisKKy8qIExDRCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgTENDUjQJCV9fUkVHKDB4NDQwMDAwMTApICAvKiBMQ0QgQ29udHJvbGxlciBDb250cm9sIFJlZ2lzdGVyIDQgKi8KKyNkZWZpbmUgTENDUjUJCV9fUkVHKDB4NDQwMDAwMTQpICAvKiBMQ0QgQ29udHJvbGxlciBDb250cm9sIFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgRkJSMAkJX19SRUcoMHg0NDAwMDAyMCkgIC8qIERNQSBDaGFubmVsIDAgRnJhbWUgQnJhbmNoIFJlZ2lzdGVyICovCisjZGVmaW5lIEZCUjEJCV9fUkVHKDB4NDQwMDAwMjQpICAvKiBETUEgQ2hhbm5lbCAxIEZyYW1lIEJyYW5jaCBSZWdpc3RlciAqLworI2RlZmluZSBGQlIyCQlfX1JFRygweDQ0MDAwMDI4KSAgLyogRE1BIENoYW5uZWwgMiBGcmFtZSBCcmFuY2ggUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRkJSMwkJX19SRUcoMHg0NDAwMDAyQykgIC8qIERNQSBDaGFubmVsIDMgRnJhbWUgQnJhbmNoIFJlZ2lzdGVyICovCisjZGVmaW5lIEZCUjQJCV9fUkVHKDB4NDQwMDAwMzApICAvKiBETUEgQ2hhbm5lbCA0IEZyYW1lIEJyYW5jaCBSZWdpc3RlciAqLworI2RlZmluZSBGREFEUjIJCV9fUkVHKDB4NDQwMDAyMjApICAvKiBETUEgQ2hhbm5lbCAyIEZyYW1lIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBGU0FEUjIJCV9fUkVHKDB4NDQwMDAyMjQpICAvKiBETUEgQ2hhbm5lbCAyIEZyYW1lIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIEZJRFIyCQlfX1JFRygweDQ0MDAwMjI4KSAgLyogRE1BIENoYW5uZWwgMiBGcmFtZSBJRCBSZWdpc3RlciAqLworI2RlZmluZSBMRENNRDIJCV9fUkVHKDB4NDQwMDAyMkMpICAvKiBETUEgQ2hhbm5lbCAyIENvbW1hbmQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRkRBRFIzCQlfX1JFRygweDQ0MDAwMjMwKSAgLyogRE1BIENoYW5uZWwgMyBGcmFtZSBEZXNjcmlwdG9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRlNBRFIzCQlfX1JFRygweDQ0MDAwMjM0KSAgLyogRE1BIENoYW5uZWwgMyBGcmFtZSBTb3VyY2UgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBGSURSMwkJX19SRUcoMHg0NDAwMDIzOCkgIC8qIERNQSBDaGFubmVsIDMgRnJhbWUgSUQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTERDTUQzCQlfX1JFRygweDQ0MDAwMjNDKSAgLyogRE1BIENoYW5uZWwgMyBDb21tYW5kIFJlZ2lzdGVyICovCisjZGVmaW5lIEZEQURSNAkJX19SRUcoMHg0NDAwMDI0MCkgIC8qIERNQSBDaGFubmVsIDQgRnJhbWUgRGVzY3JpcHRvciBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIEZTQURSNAkJX19SRUcoMHg0NDAwMDI0NCkgIC8qIERNQSBDaGFubmVsIDQgRnJhbWUgU291cmNlIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRklEUjQJCV9fUkVHKDB4NDQwMDAyNDgpICAvKiBETUEgQ2hhbm5lbCA0IEZyYW1lIElEIFJlZ2lzdGVyICovCisjZGVmaW5lIExEQ01ENAkJX19SRUcoMHg0NDAwMDI0QykgIC8qIERNQSBDaGFubmVsIDQgQ29tbWFuZCBSZWdpc3RlciAqLworI2RlZmluZSBGREFEUjUJCV9fUkVHKDB4NDQwMDAyNTApICAvKiBETUEgQ2hhbm5lbCA1IEZyYW1lIERlc2NyaXB0b3IgQWRkcmVzcyBSZWdpc3RlciAqLworI2RlZmluZSBGU0FEUjUJCV9fUkVHKDB4NDQwMDAyNTQpICAvKiBETUEgQ2hhbm5lbCA1IEZyYW1lIFNvdXJjZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIEZJRFI1CQlfX1JFRygweDQ0MDAwMjU4KSAgLyogRE1BIENoYW5uZWwgNSBGcmFtZSBJRCBSZWdpc3RlciAqLworI2RlZmluZSBMRENNRDUJCV9fUkVHKDB4NDQwMDAyNUMpICAvKiBETUEgQ2hhbm5lbCA1IENvbW1hbmQgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBPVkwxQzEJCV9fUkVHKDB4NDQwMDAwNTApICAvKiBPdmVybGF5IDEgQ29udHJvbCBSZWdpc3RlciAxICovCisjZGVmaW5lIE9WTDFDMgkJX19SRUcoMHg0NDAwMDA2MCkgIC8qIE92ZXJsYXkgMSBDb250cm9sIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgT1ZMMkMxCQlfX1JFRygweDQ0MDAwMDcwKSAgLyogT3ZlcmxheSAyIENvbnRyb2wgUmVnaXN0ZXIgMSAqLworI2RlZmluZSBPVkwyQzIJCV9fUkVHKDB4NDQwMDAwODApICAvKiBPdmVybGF5IDIgQ29udHJvbCBSZWdpc3RlciAyICovCisjZGVmaW5lIENDUgkJX19SRUcoMHg0NDAwMDA5MCkgIC8qIEN1cnNvciBDb250cm9sIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgRkJSNQkJX19SRUcoMHg0NDAwMDExMCkgIC8qIERNQSBDaGFubmVsIDUgRnJhbWUgQnJhbmNoIFJlZ2lzdGVyICovCisjZGVmaW5lIEZCUjYJCV9fUkVHKDB4NDQwMDAxMTQpICAvKiBETUEgQ2hhbm5lbCA2IEZyYW1lIEJyYW5jaCBSZWdpc3RlciAqLworCisjZGVmaW5lIExDQ1IwX0xEREFMVAkoMTw8MjYpCQkvKiBMREQgQWx0ZXJuYXRlIG1hcHBpbmcgYml0IHdoZW4gYmFzZSBwaXhlbCBpcyBSR0JUMTYgKi8KKyNkZWZpbmUgTENDUjBfT1VDCSgxPDwyNSkJCS8qIE92ZXJsYXkgVW5kZXJsYXkgQ29udHJvbCBCaXQgKi8KKworI2RlZmluZSBMQ0NSNV9TT0ZNMQkoMTw8MCkJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMSAoY2hhbm5lbCAxKSAqLworI2RlZmluZSBMQ0NSNV9TT0ZNMgkoMTw8MSkJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMiAoY2hhbm5lbCAyKSAqLworI2RlZmluZSBMQ0NSNV9TT0ZNMwkoMTw8MikJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMiAoY2hhbm5lbCAzKSAqLworI2RlZmluZSBMQ0NSNV9TT0ZNNAkoMTw8MykJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMiAoY2hhbm5lbCA0KSAqLworI2RlZmluZSBMQ0NSNV9TT0ZNNQkoMTw8NCkJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIGN1cnNvciAoY2hhbm5lbCA1KSAqLworI2RlZmluZSBMQ0NSNV9TT0ZNNgkoMTw8NSkJCS8qIFN0YXJ0IE9mIEZyYW1lIE1hc2sgZm9yIGNvbW1hbmQgZGF0YSAoY2hhbm5lbCA2KSAqLworCisjZGVmaW5lIExDQ1I1X0VPRk0xCSgxPDw4KQkJLyogRW5kIE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMSAoY2hhbm5lbCAxKSAqLworI2RlZmluZSBMQ0NSNV9FT0ZNMgkoMTw8OSkJCS8qIEVuZCBPZiBGcmFtZSBNYXNrIGZvciBPdmVybGF5IDIgKGNoYW5uZWwgMikgKi8KKyNkZWZpbmUgTENDUjVfRU9GTTMJKDE8PDEwKQkJLyogRW5kIE9mIEZyYW1lIE1hc2sgZm9yIE92ZXJsYXkgMiAoY2hhbm5lbCAzKSAqLworI2RlZmluZSBMQ0NSNV9FT0ZNNAkoMTw8MTEpCQkvKiBFbmQgT2YgRnJhbWUgTWFzayBmb3IgT3ZlcmxheSAyIChjaGFubmVsIDQpICovCisjZGVmaW5lIExDQ1I1X0VPRk01CSgxPDwxMikJCS8qIEVuZCBPZiBGcmFtZSBNYXNrIGZvciBjdXJzb3IgKGNoYW5uZWwgNSkgKi8KKyNkZWZpbmUgTENDUjVfRU9GTTYJKDE8PDEzKQkJLyogRW5kIE9mIEZyYW1lIE1hc2sgZm9yIGNvbW1hbmQgZGF0YSAoY2hhbm5lbCA2KSAqLworCisjZGVmaW5lIExDQ1I1X0JTTTEJKDE8PDE2KQkJLyogQnJhbmNoIG1hc2sgZm9yIE92ZXJsYXkgMSAoY2hhbm5lbCAxKSAqLworI2RlZmluZSBMQ0NSNV9CU00yCSgxPDwxNykJCS8qIEJyYW5jaCBtYXNrIGZvciBPdmVybGF5IDIgKGNoYW5uZWwgMikgKi8KKyNkZWZpbmUgTENDUjVfQlNNMwkoMTw8MTgpCQkvKiBCcmFuY2ggbWFzayBmb3IgT3ZlcmxheSAyIChjaGFubmVsIDMpICovCisjZGVmaW5lIExDQ1I1X0JTTTQJKDE8PDE5KQkJLyogQnJhbmNoIG1hc2sgZm9yIE92ZXJsYXkgMiAoY2hhbm5lbCA0KSAqLworI2RlZmluZSBMQ0NSNV9CU001CSgxPDwyMCkJCS8qIEJyYW5jaCBtYXNrIGZvciBjdXJzb3IgKGNoYW5uZWwgNSkgKi8KKyNkZWZpbmUgTENDUjVfQlNNNgkoMTw8MjEpCQkvKiBCcmFuY2ggbWFzayBmb3IgZGF0YSBjb21tYW5kCSAoY2hhbm5lbCA2KSAqLworCisjZGVmaW5lIExDQ1I1X0lVTTEJKDE8PDI0KQkJLyogSW5wdXQgRklGTyBVbmRlcnJ1biBNYXNrIGZvciBPdmVybGF5IDEgICovCisjZGVmaW5lIExDQ1I1X0lVTTIJKDE8PDI1KQkJLyogSW5wdXQgRklGTyBVbmRlcnJ1biBNYXNrIGZvciBPdmVybGF5IDIgICovCisjZGVmaW5lIExDQ1I1X0lVTTMJKDE8PDI2KQkJLyogSW5wdXQgRklGTyBVbmRlcnJ1biBNYXNrIGZvciBPdmVybGF5IDIgICovCisjZGVmaW5lIExDQ1I1X0lVTTQJKDE8PDI3KQkJLyogSW5wdXQgRklGTyBVbmRlcnJ1biBNYXNrIGZvciBPdmVybGF5IDIgICovCisjZGVmaW5lIExDQ1I1X0lVTTUJKDE8PDI4KQkJLyogSW5wdXQgRklGTyBVbmRlcnJ1biBNYXNrIGZvciBjdXJzb3IgKi8KKyNkZWZpbmUgTENDUjVfSVVNNgkoMTw8MjkpCQkvKiBJbnB1dCBGSUZPIFVuZGVycnVuIE1hc2sgZm9yIGRhdGEgY29tbWFuZCAqLworCisjZGVmaW5lIE9WTDFDMV9PMUVOCSgxPDwzMSkJCS8qIEVuYWJsZSBiaXQgZm9yIE92ZXJsYXkgMSAqLworI2RlZmluZSBPVkwyQzFfTzJFTgkoMTw8MzEpCQkvKiBFbmFibGUgYml0IGZvciBPdmVybGF5IDIgKi8KKyNkZWZpbmUgQ0NSX0NFTgkJKDE8PDMxKQkJLyogRW5hYmxlIGJpdCBmb3IgQ3Vyc29yICovCisKKy8qIEtleXBhZCBjb250cm9sbGVyICovCisKKyNkZWZpbmUgS1BDCQlfX1JFRygweDQxNTAwMDAwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIENvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgS1BESwkJX19SRUcoMHg0MTUwMDAwOCkgLyogS2V5cGFkIEludGVyZmFjZSBEaXJlY3QgS2V5IHJlZ2lzdGVyICovCisjZGVmaW5lIEtQUkVDCQlfX1JFRygweDQxNTAwMDEwKSAvKiBLZXlwYWQgSW50ZWZjYWNlIFJvdGFyeSBFbmNvZGVyIHJlZ2lzdGVyICovCisjZGVmaW5lIEtQTUsJCV9fUkVHKDB4NDE1MDAwMTgpIC8qIEtleXBhZCBJbnRlZmNhY2UgTWF0cml4IEtleSByZWdpc3RlciAqLworI2RlZmluZSBLUEFTCQlfX1JFRygweDQxNTAwMDIwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIEF1dG9tYXRpYyBTY2FuIHJlZ2lzdGVyICovCisjZGVmaW5lIEtQQVNNS1AwCV9fUkVHKDB4NDE1MDAwMjgpIC8qIEtleXBhZCBJbnRlcmZhY2UgQXV0b21hdGljIFNjYW4gTXVsdGlwbGUgS2V5IFByZXNzZXIgcmVnaXN0ZXIgMCAqLworI2RlZmluZSBLUEFTTUtQMQlfX1JFRygweDQxNTAwMDMwKSAvKiBLZXlwYWQgSW50ZXJmYWNlIEF1dG9tYXRpYyBTY2FuIE11bHRpcGxlIEtleSBQcmVzc2VyIHJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgS1BBU01LUDIJX19SRUcoMHg0MTUwMDAzOCkgLyogS2V5cGFkIEludGVyZmFjZSBBdXRvbWF0aWMgU2NhbiBNdWx0aXBsZSBLZXkgUHJlc3NlciByZWdpc3RlciAyICovCisjZGVmaW5lIEtQQVNNS1AzCV9fUkVHKDB4NDE1MDAwNDApIC8qIEtleXBhZCBJbnRlcmZhY2UgQXV0b21hdGljIFNjYW4gTXVsdGlwbGUgS2V5IFByZXNzZXIgcmVnaXN0ZXIgMyAqLworI2RlZmluZSBLUEtESQkJX19SRUcoMHg0MTUwMDA0OCkgLyogS2V5cGFkIEludGVyZmFjZSBLZXkgRGVib3VuY2UgSW50ZXJ2YWwgcmVnaXN0ZXIgKi8KKworI2RlZmluZSBLUENfQVMJCSgweDEgPDwgMzApICAvKiBBdXRvbWF0aWMgU2NhbiBiaXQgKi8KKyNkZWZpbmUgS1BDX0FTQUNUCSgweDEgPDwgMjkpICAvKiBBdXRvbWF0aWMgU2NhbiBvbiBBY3Rpdml0eSAqLworI2RlZmluZSBLUENfTUkJCSgweDEgPDwgMjIpICAvKiBNYXRyaXggaW50ZXJydXB0IGJpdCAqLworI2RlZmluZSBLUENfSU1LUAkoMHgxIDw8IDIxKSAgLyogSWdub3JlIE11bHRpcGxlIEtleSBQcmVzcyAqLworI2RlZmluZSBLUENfTVM3CQkoMHgxIDw8IDIwKSAgLyogTWF0cml4IHNjYW4gbGluZSA3ICovCisjZGVmaW5lIEtQQ19NUzYJCSgweDEgPDwgMTkpICAvKiBNYXRyaXggc2NhbiBsaW5lIDYgKi8KKyNkZWZpbmUgS1BDX01TNQkJKDB4MSA8PCAxOCkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgNSAqLworI2RlZmluZSBLUENfTVM0CQkoMHgxIDw8IDE3KSAgLyogTWF0cml4IHNjYW4gbGluZSA0ICovCisjZGVmaW5lIEtQQ19NUzMJCSgweDEgPDwgMTYpICAvKiBNYXRyaXggc2NhbiBsaW5lIDMgKi8KKyNkZWZpbmUgS1BDX01TMgkJKDB4MSA8PCAxNSkgIC8qIE1hdHJpeCBzY2FuIGxpbmUgMiAqLworI2RlZmluZSBLUENfTVMxCQkoMHgxIDw8IDE0KSAgLyogTWF0cml4IHNjYW4gbGluZSAxICovCisjZGVmaW5lIEtQQ19NUzAJCSgweDEgPDwgMTMpICAvKiBNYXRyaXggc2NhbiBsaW5lIDAgKi8KKyNkZWZpbmUgS1BDX01FCQkoMHgxIDw8IDEyKSAgLyogTWF0cml4IEtleXBhZCBFbmFibGUgKi8KKyNkZWZpbmUgS1BDX01JRQkJKDB4MSA8PCAxMSkgIC8qIE1hdHJpeCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lIEtQQ19ES19ERUJfU0VMCSgweDEgPDwJIDkpICAvKiBEaXJlY3QgS2V5IERlYm91bmNlIHNlbGVjdCAqLworI2RlZmluZSBLUENfREkJCSgweDEgPDwJIDUpICAvKiBEaXJlY3Qga2V5IGludGVycnVwdCBiaXQgKi8KKyNkZWZpbmUgS1BDX0RFRTAJKDB4MSA8PAkgMikgIC8qIFJvdGFyeSBFbmNvZGVyIDAgRW5hYmxlICovCisjZGVmaW5lIEtQQ19ERQkJKDB4MSA8PAkgMSkgIC8qIERpcmVjdCBLZXlwYWQgRW5hYmxlICovCisjZGVmaW5lIEtQQ19ESUUJCSgweDEgPDwJIDApICAvKiBEaXJlY3QgS2V5cGFkIGludGVycnVwdCBFbmFibGUgKi8KKworI2RlZmluZSBLUERLX0RLUAkoMHgxIDw8IDMxKQorI2RlZmluZSBLUERLX0RLNwkoMHgxIDw8CSA3KQorI2RlZmluZSBLUERLX0RLNgkoMHgxIDw8CSA2KQorI2RlZmluZSBLUERLX0RLNQkoMHgxIDw8CSA1KQorI2RlZmluZSBLUERLX0RLNAkoMHgxIDw8CSA0KQorI2RlZmluZSBLUERLX0RLMwkoMHgxIDw8CSAzKQorI2RlZmluZSBLUERLX0RLMgkoMHgxIDw8CSAyKQorI2RlZmluZSBLUERLX0RLMQkoMHgxIDw8CSAxKQorI2RlZmluZSBLUERLX0RLMAkoMHgxIDw8CSAwKQorCisjZGVmaW5lIEtQUkVDX09GMQkoMHgxIDw8IDMxKQorI2RlZmluZSBrUFJFQ19VRjEJKDB4MSA8PCAzMCkKKyNkZWZpbmUgS1BSRUNfT0YwCSgweDEgPDwgMTUpCisjZGVmaW5lIEtQUkVDX1VGMAkoMHgxIDw8IDE0KQorCisjZGVmaW5lIEtQTUtfTUtQCSgweDEgPDwgMzEpCisjZGVmaW5lIEtQQVNfU08JCSgweDEgPDwgMzEpCisjZGVmaW5lIEtQQVNNS1B4X1NPCSgweDEgPDwgMzEpCisKKyNkZWZpbmUgR1BJTzExM19CSVQJICAgKDEgPDwgMTcpLyogR1BJTzExMyBpbiBHUFNSLCBHUENSLCBiaXQgMTcgKi8KKyNkZWZpbmUgUFNMUgkgICBfX1JFRygweDQwRjAwMDM0KQorI2RlZmluZSBQU1RSCSAgIF9fUkVHKDB4NDBGMDAwMzgpICAvKiBQb3dlciBNYW5hZ2VyIFN0YW5kYnkgQ29uZmlndXJhdGlvbiBSZWcgKi8KKyNkZWZpbmUgUFNOUgkgICBfX1JFRygweDQwRjAwMDNDKSAgLyogUG93ZXIgTWFuYWdlciBTZW5zZSBDb25maWd1cmF0aW9uIFJlZyAqLworI2RlZmluZSBQVkNSCSAgIF9fUkVHKDB4NDBGMDAwNDApICAvKiBQb3dlciBNYW5hZ2VyIFZvbHRhZ2UgQ2hhbmdlIENvbnRyb2wgUmVnICovCisjZGVmaW5lIFBLV1IJICAgX19SRUcoMHg0MEYwMDA1MCkgIC8qIFBvd2VyIE1hbmFnZXIgS0IgV2FrZS1VcCBFbmFibGUgUmVnICovCisjZGVmaW5lIFBLU1IJICAgX19SRUcoMHg0MEYwMDA1NCkgIC8qIFBvd2VyIE1hbmFnZXIgS0IgTGV2ZWwtRGV0ZWN0IFN0YXR1cyBSZWcgKi8KKyNkZWZpbmUgT1NNUjQJICAgIF9fUkVHKDB4NDBBMDAwODApICAvKiAqLworI2RlZmluZSBPU0NSNAkgICAgX19SRUcoMHg0MEEwMDA0MCkgIC8qIE9TIFRpbWVyIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgT01DUjQJICAgIF9fUkVHKDB4NDBBMDAwQzApICAvKiAqLworCisjZW5kaWYJLyogQ09ORklHX1BYQTI3WCAqLworCisjZW5kaWYJLyogX1BYQV9SRUdTX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYWRzdml4LmggYi9pbmNsdWRlL2NvbmZpZ3MvYWRzdml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3OTdkMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9hZHN2aXguaApAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNAorICogUm9iZXJ0IFdoYWxleSwgQXBwbGllZCBEYXRhIFN5c3RlbXMsIEluYy4gcndoYWxleUBhcHBsaWVkZGF0YS5uZXQKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEt5bGUgSGFycmlzLCBOZXh1cyBUZWNobm9sb2dpZXMsIEluYy4ga2hhcnJpc0BuZXh1cy10ZWNoLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CisgKgorICogQ29uZmlndWF0aW9uIHNldHRpbmdzIGZvciB0aGUgTFVCQk9DSyBib2FyZC4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisvKgorICogSWYgd2UgYXJlIGRldmVsb3BpbmcsIHdlIG1pZ2h0IHdhbnQgdG8gc3RhcnQgYXJtYm9vdCBmcm9tIHJhbQorICogc28gd2UgTVVTVCBOT1QgaW5pdGlhbGl6ZSBjcml0aWNhbCByZWdzIGxpa2UgbWVtLXRpbWluZyAuLi4KKyAqLworI2RlZmluZSBDT05GSUdfSU5JVF9DUklUSUNBTAkJLyogdW5kZWYgZm9yIGRldmVsb3BpbmcgKi8KKyNkZWZpbmUgUlRDCisKKy8qCisgKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucworICogKGVhc3kgdG8gY2hhbmdlKQorICovCisjZGVmaW5lIENPTkZJR19QWEEyN1gJCTEJLyogVGhpcyBpcyBhbiBQWEEyN3ggQ1BVICAgICovCisjZGVmaW5lIENPTkZJR19BRFNWSVgJCTEJLyogb24gYSBBZHN2aXggQm9hcmQgICAgICovCisjZGVmaW5lIENPTkZJR19NTUMJCTEKKyNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkxCisKKyN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLworCisvKgorICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCisgKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JICAgIChDRkdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLworCisvKgorICogSGFyZHdhcmUgZHJpdmVycworICovCisKKy8qCisgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19GRlVBUlQJICAgICAgIDEgICAgICAgLyogd2UgdXNlIEZGVUFSVCBvbiBBRFNWSVggKi8KKworLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLworI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQorCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkgICAgICAgMzg0MDAKKworI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTiAgIDEKKworI2RlZmluZSBDT05GSUdfQ09NTUFORFMJCSgoQ09ORklHX0NNRF9ERkwgJiB+Q0ZHX0NNRF9ORVQpIHwgQ0ZHX0NNRF9NTUMgfCBDRkdfQ01EX0ZBVCB8IENGR19DTURfSURFIHwgQ0ZHX0NNRF9QQ01DSUEpCisKKy8qIHRoaXMgbXVzdCBiZSBpbmNsdWRlZCBBRlRFUiB0aGUgZGVmaW5pdGlvbiBvZiBDT05GSUdfQ09NTUFORFMgKGlmIGFueSkgKi8KKyNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KKworI3VuZGVmIENPTkZJR19TSE9XX0JPT1RfUFJPR1JFU1MKKworI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMKKyNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkxOTIuMTY4LjEuOTkKKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJydW4gYm9vdF9mbGFzaCIKKyNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCQkiY29uc29sZT10dHlTMCwzODQwMCByYW1kaXNrX3NpemU9MTIyODgiXAorCQkJCSIgcncgcm9vdD0vZGV2L3JhbSBpbml0cmQ9MHhhMDgwMDAwMCw1bSIKKworI2RlZmluZSBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTCQkJCQlcCisJInByb2dyYW1fYm9vdF9jZj0iCQkJCQkJXAorCQkJIm13LmIgMHhhMDAxMDAwMCAweGZmIDB4MjAwMDA7ICIJCVwKKwkJCSJpZgkgcGluaXQgb24gJiYgIgkJCQlcCisJCQkJImlkZSByZXNldCAmJiAiCQkJCVwKKwkJCQkiZmF0bG9hZCBpZGUgMCAweGEwMDEwMDAwIHUtYm9vdC5iaW47ICIJXAorCQkJInRoZW4gIgkJCQkJCVwKKwkJCQkicHJvdGVjdCBvZmYgMHgwIDB4MWZmZmY7ICIJCVwKKwkJCQkiZXJhc2UgMHgwIDB4MWZmZmY7ICIJCQlcCisJCQkJImNwLmIgMHhhMDAxMDAwMCAweDAgMHgyMDAwMDsgIgkJXAorCQkJImZpXDAiCQkJCQkJXAorCSJwcm9ncmFtX3V6SW1hZ2VfY2Y9IgkJCQkJCVwKKwkJCSJtdy5iIDB4YTAwMTAwMDAgMHhmZiAweDE4MDAwMDsgIgkJXAorCQkJImlmCSBwaW5pdCBvbiAmJiAiCQkJCVwKKwkJCQkiaWRlIHJlc2V0ICYmICIJCQkJXAorCQkJCSJmYXRsb2FkIGlkZSAwIDB4YTAwMTAwMDAgdXpJbWFnZTsgIglcCisJCQkidGhlbiAiCQkJCQkJXAorCQkJCSJwcm90ZWN0IG9mZiAweDQwMDAwIDB4MWJmZmZmOyAiCVwKKwkJCQkiZXJhc2UgMHg0MDAwMCAweDFiZmZmZjsgIgkJXAorCQkJCSJjcC5iIDB4YTAwMTAwMDAgMHg0MDAwMCAweDE4MDAwMDsgIglcCisJCQkiZmlcMCIJCQkJCQlcCisJInByb2dyYW1fcmFtZGlza19jZj0iCQkJCQkJXAorCQkJIm13LmIgMHhhMDAxMDAwMCAweGZmIDB4NTAwMDAwOyAiCQlcCisJCQkiaWYJIHBpbml0IG9uICYmICIJCQkJXAorCQkJCSJpZGUgcmVzZXQgJiYgIgkJCQlcCisJCQkJImZhdGxvYWQgaWRlIDAgMHhhMDAxMDAwMCByYW1kaXNrLmd6OyAiCVwKKwkJCSJ0aGVuICIJCQkJCQlcCisJCQkJInByb3RlY3Qgb2ZmIDB4MWMwMDAwIDB4NmJmZmZmOyAiCVwKKwkJCQkiZXJhc2UgMHgxYzAwMDAgMHg2YmZmZmY7ICIJCVwKKwkJCQkiY3AuYiAweGEwMDEwMDAwIDB4MWMwMDAwIDB4NTAwMDAwOyAiCVwKKwkJCSJmaVwwIgkJCQkJCVwKKwkiYm9vdF9jZj0iCQkJCQkJCVwKKwkJCSJpZgkgcGluaXQgb24gJiYgIgkJCQlcCisJCQkJImlkZSByZXNldCAmJiAiCQkJCVwKKwkJCQkiZmF0bG9hZCBpZGUgMCAweGEwMDMwMDAwIHV6SW1hZ2UgJiYgIglcCisJCQkJImZhdGxvYWQgaWRlIDAgMHhhMDgwMDAwMCByYW1kaXNrLmd6OyAiCVwKKwkJCSJ0aGVuICIJCQkJCQlcCisJCQkJImJvb3RtIDB4YTAwMzAwMDA7ICIJCQlcCisJCQkiZmlcMCIJCQkJCQlcCisJInByb2dyYW1fYm9vdF9tbWM9IgkJCQkJCVwKKwkJCSJtdy5iIDB4YTAwMTAwMDAgMHhmZiAweDIwMDAwOyAiCQlcCisJCQkiaWYJIG1tY2luaXQgJiYgIgkJCQlcCisJCQkJImZhdGxvYWQgbW1jIDAgMHhhMDAxMDAwMCB1LWJvb3QuYmluOyAiCVwKKwkJCSJ0aGVuICIJCQkJCQlcCisJCQkJInByb3RlY3Qgb2ZmIDB4MCAweDFmZmZmOyAiCQlcCisJCQkJImVyYXNlIDB4MCAweDFmZmZmOyAiCQkJXAorCQkJCSJjcC5iIDB4YTAwMTAwMDAgMHgwIDB4MjAwMDA7ICIJCVwKKwkJCSJmaVwwIgkJCQkJCVwKKwkicHJvZ3JhbV91ekltYWdlX21tYz0iCQkJCQkJXAorCQkJIm13LmIgMHhhMDAxMDAwMCAweGZmIDB4MTgwMDAwOyAiCQlcCisJCQkiaWYJIG1tY2luaXQgJiYgIgkJCQlcCisJCQkJImZhdGxvYWQgbW1jIDAgMHhhMDAxMDAwMCB1ekltYWdlOyAiCVwKKwkJCSJ0aGVuICIJCQkJCQlcCisJCQkJInByb3RlY3Qgb2ZmIDB4NDAwMDAgMHgxYmZmZmY7ICIJXAorCQkJCSJlcmFzZSAweDQwMDAwIDB4MWJmZmZmOyAiCQlcCisJCQkJImNwLmIgMHhhMDAxMDAwMCAweDQwMDAwIDB4MTgwMDAwOyAiCVwKKwkJCSJmaVwwIgkJCQkJCVwKKwkicHJvZ3JhbV9yYW1kaXNrX21tYz0iCQkJCQkJXAorCQkJIm13LmIgMHhhMDAxMDAwMCAweGZmIDB4NTAwMDAwOyAiCQlcCisJCQkiaWYJIG1tY2luaXQgJiYgIgkJCQlcCisJCQkJImZhdGxvYWQgbW1jIDAgMHhhMDAxMDAwMCByYW1kaXNrLmd6OyAiCVwKKwkJCSJ0aGVuICIJCQkJCQlcCisJCQkJInByb3RlY3Qgb2ZmIDB4MWMwMDAwIDB4NmJmZmZmOyAiCVwKKwkJCQkiZXJhc2UgMHgxYzAwMDAgMHg2YmZmZmY7ICIJCVwKKwkJCQkiY3AuYiAweGEwMDEwMDAwIDB4MWMwMDAwIDB4NTAwMDAwOyAiCVwKKwkJCSJmaVwwIgkJCQkJCVwKKwkiYm9vdF9tbWM9IgkJCQkJCQlcCisJCQkiaWYJIG1tY2luaXQgJiYgIgkJCQlcCisJCQkJImZhdGxvYWQgbW1jIDAgMHhhMDAzMDAwMCB1ekltYWdlICYmICIJXAorCQkJCSJmYXRsb2FkIG1tYyAwIDB4YTA4MDAwMDAgcmFtZGlzay5nejsgIglcCisJCQkidGhlbiAiCQkJCQkJXAorCQkJCSJib290bSAweGEwMDMwMDAwOyAiCQkJXAorCQkJImZpXDAiCQkJCQkJXAorCSJib290X2ZsYXNoPSIJCQkJCQkJXAorCQkJImNwLmIgMHgxYzAwMDAgMHhhMDgwMDAwMCAweDUwMDAwMDsgIgkJXAorCQkJImJvb3RtIDB4NDAwMDBcMCIJCQkJXAorCisjZGVmaW5lIENPTkZJR19TRVRVUF9NRU1PUllfVEFHUyAxCisjZGVmaW5lIENPTkZJR19DTURMSU5FX1RBRwkgMQkvKiBlbmFibGUgcGFzc2luZyBvZiBBVEFHcwkqLworLyogI2RlZmluZSBDT05GSUdfSU5JVFJEX1RBRwkgMSAqLworCisjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfS0dEQikKKyNkZWZpbmUgQ09ORklHX0tHREJfQkFVRFJBVEUJMjMwNDAwCQkvKiBzcGVlZCB0byBydW4ga2dkYiBzZXJpYWwgcG9ydCAqLworI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkJLyogd2hpY2ggc2VyaWFsIHBvcnQgdG8gdXNlICovCisjZW5kaWYKKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfSFVTSF9QQVJTRVIJCTEKKyNkZWZpbmUgQ0ZHX1BST01QVF9IVVNIX1BTMgkiPiAiCisKKyNkZWZpbmUgQ0ZHX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLworI2lmZGVmIENGR19IVVNIX1BBUlNFUgorI2RlZmluZSBDRkdfUFJPTVBUCQkiJCAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCisjZWxzZQorI2RlZmluZSBDRkdfUFJPTVBUCQkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2VuZGlmCisjZGVmaW5lIENGR19DQlNJWkUJCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX0JBUkdTSVpFCQlDRkdfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX0RFVklDRV9OVUxMREVWCTEKKworI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweGEwNDAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweGEwODAwMDAwCS8qIDQgLi4uIDggTUIgaW4gRFJBTQkqLworCisjdW5kZWYJQ0ZHX0NMS1NfSU5fSFoJCS8qIGV2ZXJ5dGhpbmcsIGluY2wgYm9hcmQgaW5mbywgaW4gSHogKi8KKworI2RlZmluZSBDRkdfTE9BRF9BRERSCQkweGExMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisKKyNkZWZpbmUgQ0ZHX0haCQkJMzY4NjQwMAkJLyogaW5jcmVtZW50ZXIgZnJlcTogMy42ODY0IE1IeiAqLworI2RlZmluZSBDRkdfQ1BVU1BFRUQJCTB4MjA3CQkvKiBuZWVkIHRvIGxvb2sgbW9yZSBjbG9zZWx5LCBJIHRoaW5rIHRoaXMgaXMgVHVyYm8gPSAyeCwgTD05MU1oeiAqLworCisJCQkJCQkvKiB2YWxpZCBiYXVkcmF0ZXMgKi8KKyNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwIH0KKworI2RlZmluZSBDRkdfTU1DX0JBU0UJCTB4RjAwMDAwMDAKKworLyoKKyAqIFN0YWNrIHNpemVzCisgKgorICogVGhlIHN0YWNrIHNpemVzIGFyZSBzZXQgdXAgaW4gc3RhcnQuUyB1c2luZyB0aGUgc2V0dGluZ3MgYmVsb3cKKyAqLworI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgxMjgqMTAyNCkJLyogcmVndWxhciBzdGFjayAqLworI2lmZGVmIENPTkZJR19VU0VfSVJRCisjZGVmaW5lIENPTkZJR19TVEFDS1NJWkVfSVJRCSg0KjEwMjQpCS8qIElSUSBzdGFjayAqLworI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0ZJUQkoNCoxMDI0KQkvKiBGSVEgc3RhY2sgKi8KKyNlbmRpZgorCisvKgorICogUGh5c2ljYWwgTWVtb3J5IE1hcAorICovCisjZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJICAgLyogd2UgaGF2ZSAyIGJhbmtzIG9mIERSQU0gKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8xCQkweGEwMDAwMDAwIC8qIFNEUkFNIEJhbmsgIzEgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8xX1NJWkUJMHgwNDAwMDAwMCAvKiA2NCBNQiAqLworI2RlZmluZSBQSFlTX1NEUkFNXzIJCTB4YTQwMDAwMDAgLyogU0RSQU0gQmFuayAjMiAqLworI2RlZmluZSBQSFlTX1NEUkFNXzJfU0laRQkweDAwMDAwMDAwIC8qIDAgTUIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8zCQkweGE4MDAwMDAwIC8qIFNEUkFNIEJhbmsgIzMgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8zX1NJWkUJMHgwMDAwMDAwMCAvKiAwIE1CICovCisjZGVmaW5lIFBIWVNfU0RSQU1fNAkJMHhhYzAwMDAwMCAvKiBTRFJBTSBCYW5rICM0ICovCisjZGVmaW5lIFBIWVNfU0RSQU1fNF9TSVpFCTB4MDAwMDAwMDAgLyogMCBNQiAqLworCisjZGVmaW5lIFBIWVNfRkxBU0hfMQkJMHgwMDAwMDAwMCAvKiBGbGFzaCBCYW5rICMxICovCisKKyNkZWZpbmUgQ0ZHX0RSQU1fQkFTRQkJMHhhMDAwMDAwMAorI2RlZmluZSBDRkdfRFJBTV9TSVpFCQkweDA0MDAwMDAwCisKKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCVBIWVNfRkxBU0hfMQorCisvKgorICogR1BJTyBzZXR0aW5ncworICovCisKKyNkZWZpbmUgQ0ZHX0dQU1IwX1ZBTAkJMHgwMDAxODAwNAorI2RlZmluZSBDRkdfR1BTUjFfVkFMCQkweDAwNEYwMDgwCisjZGVmaW5lIENGR19HUFNSMl9WQUwJCTB4MTNFRkMwMDAKKyNkZWZpbmUgQ0ZHX0dQU1IzX1ZBTAkJMHgwMDA2RTAzMgorI2RlZmluZSBDRkdfR1BDUjBfVkFMCQkweDA4NEFGRTFBCisjZGVmaW5lIENGR19HUENSMV9WQUwJCTB4MDAzMDAzRjIKKyNkZWZpbmUgQ0ZHX0dQQ1IyX1ZBTAkJMHgwQzAxNDAwMAorI2RlZmluZSBDRkdfR1BDUjNfVkFMCQkweDAwMDAwQzAwCisjZGVmaW5lIENGR19HUERSMF9WQUwJCTB4Q0JDM0JGRkMKKyNkZWZpbmUgQ0ZHX0dQRFIxX1ZBTAkJMHgwMEZGQUJGMworI2RlZmluZSBDRkdfR1BEUjJfVkFMCQkweDFFRUZGQzAwCisjZGVmaW5lIENGR19HUERSM19WQUwJCTB4MDE4N0VDMzIKKyNkZWZpbmUgQ0ZHX0dBRlIwX0xfVkFMCQkweDg0NDAwMDAwCisjZGVmaW5lIENGR19HQUZSMF9VX1ZBTAkJMHhBNTFBODAxMAorI2RlZmluZSBDRkdfR0FGUjFfTF9WQUwJCTB4Njk5QTk1NUEKKyNkZWZpbmUgQ0ZHX0dBRlIxX1VfVkFMCQkweDAwMDVBMEFBCisjZGVmaW5lIENGR19HQUZSMl9MX1ZBTAkJMHg0MDAwMDAwMAorI2RlZmluZSBDRkdfR0FGUjJfVV9WQUwJCTB4MDEwOUE0MDAKKyNkZWZpbmUgQ0ZHX0dBRlIzX0xfVkFMCQkweDU0MDAwMDAwCisjZGVmaW5lIENGR19HQUZSM19VX1ZBTAkJMHgwMDAwMTQwOQorCisjZGVmaW5lIENGR19QU1NSX1ZBTAkJMHgyMAorCisvKgorICogQ2xvY2sgc2V0dGluZ3MKKyAqLworI2RlZmluZSBDRkdfQ0tFTgkJMHgwMDQwMDIwMAorI2RlZmluZSBDRkdfQ0NDUgkJMHgwMjAwMDI5MCAvKiAgIDUyME1oeiAqLworLyogI2RlZmluZSBDRkdfQ0NDUgkJMHgwMjAwMDIxMCAgNDE2IE1oeiAqLworCisvKgorICogTWVtb3J5IHNldHRpbmdzCisgKi8KKworI2RlZmluZSBDRkdfTVNDMF9WQUwJCTB4MjNGMkIzREIKKyNkZWZpbmUgQ0ZHX01TQzFfVkFMCQkweDAwMDBDQ0QxCisjZGVmaW5lIENGR19NU0MyX1ZBTAkJMHgwMDAwQjg4NAorI2RlZmluZSBDRkdfTURDTkZHX1ZBTAkJMHgwODAwMEFDOAorI2RlZmluZSBDRkdfTURSRUZSX1ZBTAkJMHgwMDAwMDAxRQorI2RlZmluZSBDRkdfTURNUlNfVkFMCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgQ0ZHX0ZMWUNORkdfVkFMCQkweDAwMDEwMDAxCisjZGVmaW5lIENGR19TWENORkdfVkFMCQkweDQwMDQ0MDA0CisKKy8qCisgKiBQQ01DSUEgYW5kIENGIEludGVyZmFjZXMKKyAqLworI2RlZmluZSBDRkdfTUVDUl9WQUwJCTB4MDAwMDAwMDIKKyNkZWZpbmUgQ0ZHX01DTUVNMF9WQUwJCTB4MDAwMDQyMDQKKyNkZWZpbmUgQ0ZHX01DTUVNMV9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX01DQVRUMF9WQUwJCTB4MDAwMTA1MDQKKyNkZWZpbmUgQ0ZHX01DQVRUMV9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX01DSU8wX1ZBTAkJMHgwMDAwODQwNworI2RlZmluZSBDRkdfTUNJTzFfVkFMCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1BYQV9QQ01DSUEgMQorI2RlZmluZSBDT05GSUdfUFhBX0lERSAxCisKKyNkZWZpbmUgQ09ORklHX1BDTUNJQV9TTE9UX0EgMQorLyoganVzdCB0byBrZWVwIGJ1aWxkIHN5c3RlbSBoYXBweSAgKi8KKworI2RlZmluZSBDRkdfUENNQ0lBX01FTV9BRERSICAgICAweDI4MDAwMDAwCisjZGVmaW5lIENGR19QQ01DSUFfTUVNX1NJWkUgICAgIDB4MDQwMDAwMDAKKworCisjZGVmaW5lIENGR19JREVfTUFYQlVTCQkxCisvKiBtYXguIDEgSURFIGJ1cwkJKi8KKyNkZWZpbmUgQ0ZHX0lERV9NQVhERVZJQ0UJMQorLyogbWF4LiAxIGRyaXZlIHBlciBJREUgYnVzCSovCisKKyNkZWZpbmUgQ0ZHX0FUQV9JREUwX09GRlNFVAkweDAwMDAKKworI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUgkweDIwMDAwMDAwCisKKy8qIE9mZnNldCBmb3IgZGF0YSBJL08JCQkqLworI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MWYwCisKKy8qIE9mZnNldCBmb3Igbm9ybWFsIHJlZ2lzdGVyIGFjY2Vzc2VzCSovCisjZGVmaW5lIENGR19BVEFfUkVHX09GRlNFVAkweDFmMAorCisvKiBPZmZzZXQgZm9yIGFsdGVybmF0ZSByZWdpc3RlcnMJKi8KKyNkZWZpbmUgQ0ZHX0FUQV9BTFRfT0ZGU0VUCTB4M2YwCisKKy8qCisgKiBGTEFTSCBhbmQgZW52aXJvbm1lbnQgb3JnYW5pemF0aW9uCisgKi8KKworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCTEKKworI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCTAKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkweDIwMDAwCisKKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJNCArIDI1NSAgLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICAgICovCisKKy8qIHRpbWVvdXQgdmFsdWVzIGFyZSBpbiB0aWNrcyAqLworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkoMjUqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAqLworI2RlZmluZSBDRkdfRkxBU0hfV1JJVEVfVE9VVAkoMjUqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAqLworCisvKiB3cml0ZSBmbGFzaCBsZXNzIHNsb3dseSAqLworI2RlZmluZSBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURSAxCisKKy8qIEZsYXNoIGVudmlyb25tZW50IGxvY2F0aW9ucyAqLworI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoUEhZU19GTEFTSF8xICsgQ0ZHX01PTklUT1JfTEVOKQkvKiBBZGRyIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MjAwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCAgICAgCSovCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4MjAwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IJKi8KKworI2VuZGlmCS8qIF9fQ09ORklHX0ggKi8K